diff --git a/exercises/practice/acronym/.gitignore b/exercises/practice/acronym/.gitignore new file mode 100644 index 0000000..78d2464 --- /dev/null +++ b/exercises/practice/acronym/.gitignore @@ -0,0 +1,13 @@ +## -*- conf -*- +.rebar3 +.docs/ +.meta/ +_build/ +ebin/ +erl_crash.dump +rebar3.crashdump + +tmp +bin/configlet +bin/configlet.exe +CHECKLIST diff --git a/exercises/practice/acronym/Makefile b/exercises/practice/acronym/Makefile new file mode 100644 index 0000000..fbb5a7d --- /dev/null +++ b/exercises/practice/acronym/Makefile @@ -0,0 +1,21 @@ +ERL := $(shell which erl) +REBAR3 := $(shell which rebar3) + +null := +space := $(null) # +comma := , + +ifeq ($(ERL),) + $(error Can't find Erlang executable 'erl') +else ifeq ($(REBAR3),) + $(error Can't find rebar3) +endif + +compile: ; $(REBAR3) compile + +clean: ; $(REBAR3) clean + +.PHONY: test +test: + $(REBAR3) eunit \ + -m $(subst $(space),$(comma),$(basename $(notdir $(wildcard test/*.lfe)))) diff --git a/exercises/practice/acronym/rebar.config b/exercises/practice/acronym/rebar.config new file mode 100644 index 0000000..d53487a --- /dev/null +++ b/exercises/practice/acronym/rebar.config @@ -0,0 +1,11 @@ +{plugins, [{rebar3_lfe, "0.4.3"}]}. + +{provider_hooks, [{post, [{compile, {lfe, compile}}]}]}. + +{deps, [{lfe, "2.1.1"}]}. + +{profiles, + [{test, + [{eunit_compile_opts, [{src_dirs, ["src", "test"]}]}, + {deps, + [{ltest, "0.13.3"}]}]}]}. diff --git a/exercises/practice/acronym/rebar.lock b/exercises/practice/acronym/rebar.lock new file mode 100644 index 0000000..d5a6b3b --- /dev/null +++ b/exercises/practice/acronym/rebar.lock @@ -0,0 +1,8 @@ +{"1.2.0", +[{<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.1">>},0}]}. +[ +{pkg_hash,[ + {<<"lfe">>, <<"4A888B26172D198DC7A5AFEB897E8248AF7D56E1638D9C8249AAF933AE811B96">>}]}, +{pkg_hash_ext,[ + {<<"lfe">>, <<"C484D3B655D40DED58BC41B17B22F173711C681BF36063A234A9BAA9506947E1">>}]} +]. diff --git a/exercises/practice/acronym/src/acronym.app.src b/exercises/practice/acronym/src/acronym.app.src new file mode 100644 index 0000000..96bdb28 --- /dev/null +++ b/exercises/practice/acronym/src/acronym.app.src @@ -0,0 +1,11 @@ +%% -*- erlang -*- +{application, 'acronym', + [{description, ""}, + {vsn, "0.0.1"}, + {modules, + ['acronym']}, + {registered, []}, + {applications, + [kernel, stdlib]}, + {included_applications, []}, + {env, []}]}. diff --git a/exercises/practice/acronym/src/acronym.lfe b/exercises/practice/acronym/src/acronym.lfe new file mode 100644 index 0000000..04ba18b --- /dev/null +++ b/exercises/practice/acronym/src/acronym.lfe @@ -0,0 +1,5 @@ +(defmodule acronym + (export (abbreviate 1))) + +(defun abbreviate (str) + (throw "You need to implement abbreviate")) diff --git a/exercises/practice/acronym/test/acronym-tests.lfe b/exercises/practice/acronym/test/acronym-tests.lfe new file mode 100644 index 0000000..fb2da44 --- /dev/null +++ b/exercises/practice/acronym/test/acronym-tests.lfe @@ -0,0 +1,26 @@ +(defmodule acronym-tests + (behaviour ltest-unit) + (export all)) + +(include-lib "ltest/include/ltest-macros.lfe") + +(deftest no-allergies-at-all (is-equal () (allergies:allergies 0))) + +(defun acronyms_test_ () + (lists:map #'make-test/1 (cases))) + +(defun make-test + (((tuple description input expected)) + (tuple description (lambda () (is-equal expected (acronym:abbreviate input)))))) + +(defun cases () + (list + (tuple "basic" "Portable Network Graphics" "PNG") + (tuple "lowercase words" "Ruby on Rails" "ROR") + (tuple "punctuation" "First In, First Out" "FIFO") + (tuple "all caps word" "GNU Image Manipulation Program" "GIMP") + (tuple "punctuation without whitespace" "Complementary metal-oxide semiconductor" "CMOS") + (tuple "very long abbreviation" "Rolling On The Floor Laughing So Hard That My Dogs Came Over And Licked Me" "ROTFLSHTMDCOALM") + (tuple "consecutive delimiters" "Something - I made up from thin air" "SIMUFTA") + (tuple "apostrophes" "Halley's Comet" "HC") + (tuple "underscore emphasis" "The Road _Not_ Taken" "TRNT")))