Skip to content

Commit

Permalink
Merge pull request #9 from elmbridge/upgrade-0.19
Browse files Browse the repository at this point in the history
Upgrade 0.19
  • Loading branch information
avh4 authored Jan 17, 2019
2 parents 4490428 + 3ec1647 commit 031b08d
Show file tree
Hide file tree
Showing 13 changed files with 126 additions and 83 deletions.
20 changes: 10 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ language: node_js
node_js: "10"

install:
- npm install elm@elm0.18.0
- npm install elm@elm0.19.0

script:
- npx elm-make --yes HelloWorld.elm
- npx elm-make --yes Part1.elm
- npx elm-make --yes Part2.elm
- npx elm-make --yes Part3.elm
- npx elm-make --yes Part4.elm
- npx elm-make --yes Part5.elm
- npx elm-make --yes Part6.elm
- npx elm-make --yes Part7.elm
- npx elm-make --yes Part8.elm
- npx elm make HelloWorld.elm
- npx elm make Part1.elm
- npx elm make Part2.elm
- npx elm make Part3.elm
- npx elm make Part4.elm
- npx elm make Part5.elm
- npx elm make Part6.elm
- npx elm make Part7.elm
- npx elm make Part8.elm
55 changes: 34 additions & 21 deletions EmojiConverter.elm
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
module EmojiConverter exposing (textToEmoji, emojiToText, supportedEmojis)
module EmojiConverter exposing (emojiToText, supportedEmojis, textToEmoji)

import List
import List.Extra
import String
import Char
import Dict
import List
import List.Extra
import Regex
import String


type alias Key =
Expand All @@ -14,20 +14,32 @@ type alias Key =

textToEmoji : Key -> String -> String
textToEmoji key text =
convert supportedLetters (rotateEmojis key) (Regex.regex "") text
convert supportedLetters (rotateEmojis key) splitEveryCharacter text


emojiToText : Key -> String -> String
emojiToText key emojis =
let
splitter =
-- due to JavaScript issues with splitting and unicode, we maually split the string.
(Regex.regex "([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])")
in
convert (rotateEmojis key) supportedLetters splitter emojis
convert (rotateEmojis key) supportedLetters splitEveryEmoji emojis


splitEveryCharacter : String -> List String
splitEveryCharacter =
String.split ""


splitEveryEmoji : String -> List String
splitEveryEmoji str =
-- due to JavaScript issues with splitting and unicode, we maually split the string.
Regex.fromString "([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])"
|> Maybe.withDefault Regex.never
|> Regex.find
|> (\matcher ->
matcher str
|> List.map .match
)

convert : List String -> List String -> Regex.Regex -> String -> String

convert : List String -> List String -> (String -> List String) -> String -> String
convert orderedKeys orderedValues splitter string =
let
lookupTable =
Expand All @@ -39,20 +51,19 @@ convert orderedKeys orderedValues splitter string =
|> Dict.get key
|> Maybe.withDefault key
in
string
|> Regex.split Regex.All splitter
|> List.map (getValueOrReturnKey)
|> String.join ""
string
|> splitter
|> List.map getValueOrReturnKey
|> String.join ""


rotateEmojis : Key -> List String
rotateEmojis key =
supportedEmojis
|> List.Extra.elemIndex key
-- if the key can't be found, default to the first emoji listed.
|>
Maybe.withDefault 0
|> (flip List.Extra.splitAt supportedEmojis)
|> Maybe.withDefault 0
|> (\a -> List.Extra.splitAt a supportedEmojis)
|> (\( head, tail ) -> [ tail, head ])
|> List.concat

Expand All @@ -61,9 +72,11 @@ supportedLetters : List String
supportedLetters =
[ -- lowercase letters
List.range 97 122
-- uppercase letters

-- uppercase letters
, List.range 65 90
-- numbers

-- numbers
, List.range 48 57
]
|> List.concat
Expand Down
11 changes: 7 additions & 4 deletions HelloWorld.elm
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
module HelloWorld exposing (..)
module HelloWorld exposing (Model, Msg(..), init, main, update, view)

import Browser
import Html
import Html.Attributes
import Html.Events



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down Expand Up @@ -44,6 +46,7 @@ update msg model =
ChangeText ->
if model.buttonLabel == "hello world!" then
{ model | buttonLabel = "goodbye world!" }

else
{ model | buttonLabel = "hello world!" }

Expand Down
10 changes: 6 additions & 4 deletions Part1.elm
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
module Part1 exposing (..)
module Part1 exposing (Model, Msg(..), init, main, update, view)

import Browser
import Html
import Html.Attributes
import Html.Events



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down
10 changes: 6 additions & 4 deletions Part2.elm
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
module Part2 exposing (..)
module Part2 exposing (Model, Msg(..), init, main, update, view)

import Browser
import Html
import Html.Attributes
import Html.Events



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down
11 changes: 7 additions & 4 deletions Part3.elm
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
module Part3 exposing (..)
module Part3 exposing (Model, Msg(..), defaultKey, init, main, translateText, update, view)

import Browser
import EmojiConverter
import Html
import Html.Attributes
import Html.Events
import Regex



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down
10 changes: 6 additions & 4 deletions Part4.elm
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
module Part4 exposing (..)
module Part4 exposing (Model, Msg(..), defaultKey, init, main, translateText, update, view)

import Browser
import EmojiConverter
import Html
import Html.Attributes
import Html.Events



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down
10 changes: 6 additions & 4 deletions Part5.elm
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
module Part5 exposing (..)
module Part5 exposing (Direction(..), Model, Msg(..), defaultKey, init, main, translateText, update, view)

import Browser
import EmojiConverter
import Html
import Html.Attributes
import Html.Events



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down
10 changes: 6 additions & 4 deletions Part6.elm
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
module Part6 exposing (..)
module Part6 exposing (Direction(..), Model, Msg(..), defaultKey, init, main, renderKey, renderKeys, translateText, update, view)

import Browser
import EmojiConverter
import Html
import Html.Attributes
import Html.Events



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down
10 changes: 6 additions & 4 deletions Part7.elm
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
module Part7 exposing (..)
module Part7 exposing (Direction(..), Model, Msg(..), defaultKey, init, main, renderKey, renderKeys, translateText, update, view)

import Browser
import EmojiConverter
import Html
import Html.Attributes
import Html.Events



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down
10 changes: 6 additions & 4 deletions Part8.elm
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
module Part8 exposing (..)
module Part8 exposing (Direction(..), Model, Msg(..), defaultKey, init, main, renderKey, renderKeys, translateText, update, view)

import Browser
import EmojiConverter
import Html
import Html.Attributes
import Html.Events



-- MAIN


main : Program Never Model Msg
main : Program () Model Msg
main =
Html.beginnerProgram
{ model = init
Browser.sandbox
{ init = init
, view = view
, update = update
}
Expand Down
16 changes: 0 additions & 16 deletions elm-package.json

This file was deleted.

26 changes: 26 additions & 0 deletions elm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"type": "application",
"source-directories": [
"."
],
"elm-version": "0.19.0",
"dependencies": {
"direct": {
"elm/browser": "1.0.0",
"elm/core": "1.0.0",
"elm/html": "1.0.0",
"elm/regex": "1.0.0",
"elm-community/list-extra": "8.0.0"
},
"indirect": {
"elm/json": "1.0.0",
"elm/time": "1.0.0",
"elm/url": "1.0.0",
"elm/virtual-dom": "1.0.2"
}
},
"test-dependencies": {
"direct": {},
"indirect": {}
}
}

0 comments on commit 031b08d

Please sign in to comment.