From f039d394a50d2e4e7489060bc69a1ab86698f944 Mon Sep 17 00:00:00 2001 From: randogoth Date: Sun, 2 Feb 2025 21:43:12 +0200 Subject: [PATCH] refactored --- CHANGELOG.md | 3 --- README.md | 16 ++++++++++------ bunny.png | Bin 0 -> 13195 bytes example/map3terms_example.dart | 11 +++++++++++ example/whatfreewords_example.dart | 6 ------ lib/map3terms.dart | 3 +++ ...tfreewords_base.dart => map3terms_base.dart} | 0 ...freewords_cipher.dart => map3terms_map.dart} | 0 ..._scrambler.dart => map3terms_scrambler.dart} | 2 +- lib/whatfreewords.dart | 3 --- pubspec.yaml | 4 ++-- ...tfreewords_test.dart => map3terms_test.dart} | 4 ++-- 12 files changed, 29 insertions(+), 23 deletions(-) delete mode 100644 CHANGELOG.md create mode 100644 bunny.png create mode 100644 example/map3terms_example.dart delete mode 100644 example/whatfreewords_example.dart create mode 100644 lib/map3terms.dart rename lib/src/{whatfreewords_base.dart => map3terms_base.dart} (100%) rename lib/src/{whatfreewords_cipher.dart => map3terms_map.dart} (100%) rename lib/src/{whatfreewords_scrambler.dart => map3terms_scrambler.dart} (99%) delete mode 100644 lib/whatfreewords.dart rename test/{whatfreewords_test.dart => map3terms_test.dart} (96%) diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index effe43c..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.0.0 - -- Initial version. diff --git a/README.md b/README.md index c47cd17..4603ddc 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ -# WhatFreeWords +![bunny](bunny.png) + +# Map3Terms [![](http://www.wtfpl.net/wp-content/uploads/2012/12/wtfpl-badge-4.png")](http://www.wtfpl.net/) -This is the Dart port of the original [JavaScript implementation](https://github.com/pballett/whatfreewords) that was published as a small test to show how one might reversibly map each ~1m² element of the globe onto a 3-tuple of words. +This is the Dart port of the original [JavaScript implementation](https://github.com/pballett/map3terms) of a small but ingenious test to show how one might reversibly map roughly each square meter of the globe onto a 3-tuple of words using a simplified symmetric encryption method called [Feistel cipher](https://en.wikipedia.org/wiki/Feistel_cipher). + +It seems inspired by the existing proprietary geocoding service [What3Words](https://wiki.openstreetmap.org/wiki/What3words) but uses a completely different method and list of words. ## Installation @@ -10,15 +14,15 @@ In your Flutter/Dart `pubspec.yaml` file include ```yaml dependencies: - whatfreewords: + map3terms: git: - url: https://github.com/randogoth/whatfreewords.git + url: https://github.com/randogoth/map3terms.git ``` ## Usage ```dart -import 'package:whatfreewords/whatfreewords.dart'; +import 'package:map3terms/map3terms.dart'; // coordinate to wfw final List coord = [51.50844113, -0.116708278]; @@ -30,7 +34,7 @@ final coords = wordsToCoord(words); print(coords); // [51.5084, -0.1167] ``` -Check it out [here](https://pballett.github.io/whatfreewords/). +Check it out [here](https://pballett.github.io/map3terms/). To do this we needed three things: 1. A function which maps metre-accurate (latitude, longitude) pairs into three 5-digit integers below 40k. diff --git a/bunny.png b/bunny.png new file mode 100644 index 0000000000000000000000000000000000000000..881fd1be13735f6e8c245cfdee0760557fa5abd3 GIT binary patch literal 13195 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 coordinate = [51.50844113, -0.116708278]; + + String words = await coordToWords(coordinate); + print("Words: $words"); + + List backToCoord = await wordsToCoord(words); + print("Coordinates: ${backToCoord[0]}, ${backToCoord[1]}"); +} diff --git a/example/whatfreewords_example.dart b/example/whatfreewords_example.dart deleted file mode 100644 index f8cc935..0000000 --- a/example/whatfreewords_example.dart +++ /dev/null @@ -1,6 +0,0 @@ -import 'package:whatfreewords/whatfreewords.dart'; - -void main() { - var awesome = Awesome(); - print('awesome: ${awesome.isAwesome}'); -} diff --git a/lib/map3terms.dart b/lib/map3terms.dart new file mode 100644 index 0000000..7286f72 --- /dev/null +++ b/lib/map3terms.dart @@ -0,0 +1,3 @@ +library map3terms; + +export 'src/map3terms_scrambler.dart'; \ No newline at end of file diff --git a/lib/src/whatfreewords_base.dart b/lib/src/map3terms_base.dart similarity index 100% rename from lib/src/whatfreewords_base.dart rename to lib/src/map3terms_base.dart diff --git a/lib/src/whatfreewords_cipher.dart b/lib/src/map3terms_map.dart similarity index 100% rename from lib/src/whatfreewords_cipher.dart rename to lib/src/map3terms_map.dart diff --git a/lib/src/whatfreewords_scrambler.dart b/lib/src/map3terms_scrambler.dart similarity index 99% rename from lib/src/whatfreewords_scrambler.dart rename to lib/src/map3terms_scrambler.dart index 244a29c..ac10945 100644 --- a/lib/src/whatfreewords_scrambler.dart +++ b/lib/src/map3terms_scrambler.dart @@ -1,5 +1,5 @@ import 'dart:math'; -import 'whatfreewords_cipher.dart'; +import 'map3terms_map.dart'; final Map ilist = wlist.map((key, value) => MapEntry(value, key)); diff --git a/lib/whatfreewords.dart b/lib/whatfreewords.dart deleted file mode 100644 index 3e17f1a..0000000 --- a/lib/whatfreewords.dart +++ /dev/null @@ -1,3 +0,0 @@ -library whatfreewords; - -export 'src/whatfreewords_scrambler.dart'; \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index fe1ff46..2d6aa50 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ -name: whatfreewords +name: map3terms description: A library for converting coordinates to words and back using a Feistel network. version: 1.0.0 -homepage: https://github.com/randogoth/whatfreewords +homepage: https://github.com/randogoth/map3terms environment: sdk: '>=2.17.0 <3.0.0' diff --git a/test/whatfreewords_test.dart b/test/map3terms_test.dart similarity index 96% rename from test/whatfreewords_test.dart rename to test/map3terms_test.dart index fffb735..ed4dd8e 100644 --- a/test/whatfreewords_test.dart +++ b/test/map3terms_test.dart @@ -1,11 +1,11 @@ import 'package:test/test.dart'; import 'dart:math'; -import 'package:whatfreewords/whatfreewords.dart'; +import 'package:map3terms/map3terms.dart'; void main() { - group('WhatFreeWords Tests', () { + group('map3terms Tests', () { test('Coordinate to Words and Back', () async { final List coord = [51.50844113, -0.116708278]; final words = await coordToWords(coord);