├── .editorconfig
├── .formatter.exs
├── .github
└── workflows
│ └── test.yml
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── demo
├── .dockerignore
├── .formatter.exs
├── .gitignore
├── Dockerfile
├── README.md
├── assets
│ ├── css
│ │ └── app.css
│ ├── js
│ │ ├── app.js
│ │ └── copy.js
│ └── tailwind.config.js
├── config
│ ├── config.exs
│ ├── dev.exs
│ ├── prod.exs
│ ├── runtime.exs
│ └── test.exs
├── lib
│ ├── namor_demo.ex
│ ├── namor_demo
│ │ ├── application.ex
│ │ └── params.ex
│ ├── namor_demo_web.ex
│ └── namor_demo_web
│ │ ├── endpoint.ex
│ │ ├── html
│ │ └── error_html.ex
│ │ ├── layouts.ex
│ │ ├── layouts
│ │ └── root.html.heex
│ │ ├── live
│ │ ├── index_live.ex
│ │ └── index_live.html.heex
│ │ ├── router.ex
│ │ └── telemetry.ex
├── mix.exs
├── mix.lock
├── priv
│ └── static
│ │ └── robots.txt
└── rel
│ └── overlays
│ └── bin
│ ├── server
│ └── server.bat
├── dict
├── default
│ ├── adjectives.txt
│ ├── nouns.txt
│ └── verbs.txt
├── reserved.txt
└── rugged
│ ├── adjectives.txt
│ ├── nouns.txt
│ └── verbs.txt
├── lib
├── namor.ex
└── namor
│ ├── dictionary.ex
│ └── helpers.ex
├── mix.exs
├── mix.lock
└── test
├── dict
├── custom
│ ├── adjectives.txt
│ ├── nouns.txt
│ └── verbs.txt
└── reserved.txt
├── namor
├── dictionary_test.exs
└── helpers_test.exs
├── namor_test.exs
└── test_helper.exs
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_size = 2
6 | indent_style = space
7 | insert_final_newline = true
8 | trim_trailing_whitespace = true
9 |
10 | [*.md]
11 | trim_trailing_whitespace = false
12 |
--------------------------------------------------------------------------------
/.formatter.exs:
--------------------------------------------------------------------------------
1 | [
2 | inputs: ["*.{ex,exs}", "{config,lib,test}/**/*.{ex,exs}"],
3 | line_length: 120
4 | ]
5 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Test
2 | permissions:
3 | contents: read
4 | on:
5 | pull_request:
6 | push:
7 | branches: [master]
8 | env:
9 | MIX_ENV: test
10 | jobs:
11 | test:
12 | runs-on: ubuntu-latest
13 | strategy:
14 | matrix:
15 | otp: ["24", "25"]
16 | elixir: ["1.13", "1.14"]
17 | steps:
18 | - uses: actions/checkout@v3
19 | - uses: erlef/setup-beam@v1
20 | with:
21 | otp-version: ${{ matrix.otp }}
22 | elixir-version: ${{ matrix.elixir }}
23 | - uses: actions/cache@v3
24 | with:
25 | path: deps
26 | key: mix-deps-${{ runner.os }}-${{ hashFiles('**/mix.lock') }}
27 | restore-keys: |
28 | mix-deps-${{ runner.os }}-
29 | - uses: actions/cache@v3
30 | with:
31 | path: _build
32 | key: mix-build-${{ runner.os }}-${{ hashFiles('**/mix.lock') }}
33 | restore-keys: |
34 | mix-build-${{ runner.os }}-
35 | - run: mix deps.get
36 | - run: mix test
37 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore system files
2 | .DS_Store
3 |
4 | # The directory Mix will write compiled artifacts to.
5 | /_build/
6 |
7 | # If you run "mix test --cover", coverage assets end up here.
8 | /cover/
9 |
10 | # The directory Mix downloads your dependencies sources to.
11 | /deps/
12 |
13 | # Where third-party dependencies like ExDoc output generated docs.
14 | /doc/
15 |
16 | # Ignore .fetch files in case you like to edit your project deps locally.
17 | /.fetch
18 |
19 | # If the VM crashes, it generates a dump, let's ignore it too.
20 | erl_crash.dump
21 |
22 | # Also ignore archive artifacts (built via "mix archive.build").
23 | *.ez
24 |
25 | # Ignore package tarball (built via "mix hex.build").
26 | namor-*.tar
27 |
28 | # Temporary files, for example, from tests.
29 | /tmp/
30 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## v1.0.3
2 |
3 | - Updated documentation things
4 |
5 | ## v1.0.2
6 |
7 | - Renamed the `:manly` dictionary to `:rugged`
8 |
9 | ## v1.0.1
10 |
11 | - Added demo phoenix app
12 | - Fixed issue where a nil seperator would cause a crash
13 |
14 | ## v1.0.0
15 |
16 | - Initial release 🎉
17 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2023 Jason Maurer
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Namor
2 |
3 | Namor is a name generator for Elixir that creates random, url-friendly names. This comes in handy if you need to generate unique subdomains like many PaaS/SaaS providers do, or unique names for anything else. Supports compile-time dictionary loading, subdomain validation with reserved names, custom dictionaries and reserved word lists, alternate dictionaries, and more.
4 |
5 | [See a demo here.](https://namor.jsonmaur.com) Also available for [Javascript](https://github.com/jsonmaur/namor.js).
6 |
7 | > _Please Note: Generated names are not always guaranteed to be unique. To reduce the chances of collision, you can increase the length of the trailing number ([see here for collision stats](#collision-stats)). Always be sure to check your database before assuming a generated value is unique._
8 |
9 | - [Installation](#installation)
10 | - [Getting Started](#getting-started)
11 | - [Collision Stats](#collision-stats)
12 | - [Custom Dictionaries](#custom-dictionaries)
13 |
14 | ## Installation
15 |
16 | ```elixir
17 | def deps do
18 | [
19 | {:namor, "~> 1.0"}
20 | ]
21 | end
22 | ```
23 |
24 | ## Getting Started
25 |
26 | ```elixir
27 | iex> require Namor
28 |
29 | iex> Namor.generate()
30 | {:ok, "sandwich-invent"}
31 |
32 | iex> Namor.generate(salt: 5)
33 | {:ok, "sandwich-invent-s86uo"}
34 |
35 | iex> Namor.generate(words: 3, dictionary: :rugged)
36 | {:ok, "savage-whiskey-stain"}
37 | ```
38 |
39 | An example module that generates subdomains for users (does not check for database uniqueness):
40 |
41 | ```elixir
42 | defmodule MyApp.Subdomains do
43 | use Namor
44 |
45 | @salt_length 5
46 |
47 | def get_new_subdomain(nil), do: Namor.generate(salt: @salt_length)
48 |
49 | def get_new_subdomain(name) do
50 | with false <- Namor.reserved?(name),
51 | subdomain <- Namor.with_salt(name, @salt_length),
52 | true <- Namor.subdomain?(subdomain) do
53 | {:ok, subdomain}
54 | else
55 | _ -> {:error, :invalid_subdomain}
56 | end
57 | end
58 | end
59 | ```
60 |
61 | ## Collision Stats
62 |
63 | The following stats give you the total number of permutations based on the word count (without a salt), and can help you make a decision on how long to make your salt. This data is based on the number of words we currently have in our [dictionary files](https://github.com/jsonmaur/namor/tree/master/dict).
64 |
65 | ##### `:default` dictionary
66 |
67 | - 1-word combinations: 7,948
68 | - 2-word combinations: 11,386,875
69 | - 3-word combinations: 12,382,548,750
70 | - 4-word combinations: 23,217,278,906,250
71 |
72 | ##### `:rugged` dictionary
73 |
74 | - 1-word combinations: 735
75 | - 2-word combinations: 127,400
76 | - 3-word combinations: 14,138,880
77 | - 4-word combinations: 3,958,886,400
78 |
79 | ## Custom Dictionaries
80 |
81 | In order for our dictionary files to be loaded into your application during compilation, [`generate/1`](https://hexdocs.pm/namor/Namor.html#generate/1) and [`reserved?/1`](https://hexdocs.pm/namor/Namor.html#reserved?/1) are defined as a macros. This means they can only be used after calling `use Namor` or `require Namor`, which should be done during compilation (and not inside a function). If you want to use your own dictionary, consider calling [`Namor.Helpers.get_dict!/2`](https://hexdocs.pm/namor/Namor.Helpers.html#get_dict!/2) in a place that executes during compilation and **not** runtime. For example:
82 |
83 | ```
84 | ┌── dictionaries/
85 | │ ┌── foobar/
86 | │ │ ┌── adjectives.txt
87 | │ │ ├── nouns.txt
88 | │ │ └── verbs.txt
89 | │ └── reserved.txt
90 | ```
91 |
92 | ```elixir
93 | defmodule MyApp.Subdomains do
94 | use Namor
95 |
96 | @salt_length 5
97 | @base_path Path.expand("./dictionaries", __DIR__)
98 |
99 | @reserved Namor.Helpers.get_dict!("reserved.txt", @base_path)
100 | @dictionary Namor.Helpers.get_dict!(:foobar, @base_path)
101 |
102 | defp reserved, do: @reserved
103 | defp dictionary, do: @dictionary
104 |
105 | def get_new_subdomain(nil), do: Namor.generate([salt: @salt_length], dictionary())
106 |
107 | def get_new_subdomain(name) do
108 | with false <- Namor.reserved?(name, reserved()),
109 | subdomain <- Namor.with_salt(name, @salt_length),
110 | true <- Namor.subdomain?(subdomain) do
111 | {:ok, subdomain}
112 | else
113 | _ -> {:error, :invalid_subdomain}
114 | end
115 | end
116 | end
117 | ```
118 |
--------------------------------------------------------------------------------
/demo/.dockerignore:
--------------------------------------------------------------------------------
1 | # This file excludes paths from the Docker build context.
2 | #
3 | # By default, Docker's build context includes all files (and folders) in the
4 | # current directory. Even if a file isn't copied into the container it is still sent to
5 | # the Docker daemon.
6 | #
7 | # There are multiple reasons to exclude files from the build context:
8 | #
9 | # 1. Prevent nested folders from being copied into the container (ex: exclude
10 | # /assets/node_modules when copying /assets)
11 | # 2. Reduce the size of the build context and improve build time (ex. /build, /deps, /doc)
12 | # 3. Avoid sending files containing sensitive information
13 | #
14 | # More information on using .dockerignore is available here:
15 | # https://docs.docker.com/engine/reference/builder/#dockerignore-file
16 |
17 | .dockerignore
18 |
19 | # Ignore git, but keep git HEAD and refs to access current commit hash if needed:
20 | #
21 | # $ cat .git/HEAD | awk '{print ".git/"$2}' | xargs cat
22 | # d0b8727759e1e0e7aa3d41707d12376e373d5ecc
23 | .git
24 | !.git/HEAD
25 | !.git/refs
26 |
27 | # Common development/test artifacts
28 | /cover/
29 | /doc/
30 | /test/
31 | /tmp/
32 | .elixir_ls
33 |
34 | # Mix artifacts
35 | /_build/
36 | /deps/
37 | *.ez
38 |
39 | # Generated on crash by the VM
40 | erl_crash.dump
41 |
42 | # Static artifacts - These should be fetched and built inside the Docker image
43 | /assets/node_modules/
44 | /priv/static/assets/
45 | /priv/static/cache_manifest.json
46 |
--------------------------------------------------------------------------------
/demo/.formatter.exs:
--------------------------------------------------------------------------------
1 | [
2 | import_deps: [:phoenix],
3 | plugins: [Phoenix.LiveView.HTMLFormatter],
4 | inputs: ["*.{heex,ex,exs}", "{config,lib}/**/*.{heex,ex,exs}"]
5 | ]
6 |
--------------------------------------------------------------------------------
/demo/.gitignore:
--------------------------------------------------------------------------------
1 | # The directory Mix will write compiled artifacts to.
2 | /_build/
3 |
4 | # If you run "mix test --cover", coverage assets end up here.
5 | /cover/
6 |
7 | # The directory Mix downloads your dependencies sources to.
8 | /deps/
9 |
10 | # Where 3rd-party dependencies like ExDoc output generated docs.
11 | /doc/
12 |
13 | # Ignore .fetch files in case you like to edit your project deps locally.
14 | /.fetch
15 |
16 | # If the VM crashes, it generates a dump, let's ignore it too.
17 | erl_crash.dump
18 |
19 | # Also ignore archive artifacts (built via "mix archive.build").
20 | *.ez
21 |
22 | # Ignore package tarball (built via "mix hex.build").
23 | namor_demo-*.tar
24 |
25 | # Ignore assets that are produced by build tools.
26 | /priv/static/assets/
27 |
28 | # Ignore digested assets cache.
29 | /priv/static/cache_manifest.json
30 |
31 | # In case you use Node.js/npm, you want to ignore these.
32 | /assets/node_modules/
33 |
--------------------------------------------------------------------------------
/demo/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG ELIXIR_VERSION=1.14.3
2 | ARG OTP_VERSION=25.2.1
3 | ARG DEBIAN_VERSION=bullseye-20230109-slim
4 |
5 | ARG BUILDER_IMAGE="hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}"
6 | ARG RUNNER_IMAGE="debian:${DEBIAN_VERSION}"
7 |
8 | FROM ${BUILDER_IMAGE} as builder
9 |
10 | # install build dependencies
11 | RUN apt-get update -y && apt-get install -y build-essential git && \
12 | apt-get clean && rm -f /var/lib/apt/lists/*_*
13 |
14 | # prepare build dir
15 | WORKDIR /app
16 |
17 | # install hex + rebar
18 | RUN mix local.hex --force && \
19 | mix local.rebar --force
20 |
21 | # set build ENV
22 | ENV MIX_ENV="prod"
23 |
24 | # install mix dependencies
25 | COPY mix.exs mix.lock ./
26 | RUN mix deps.get --only $MIX_ENV
27 | RUN mkdir config
28 |
29 | # copy compile-time config files before we compile dependencies
30 | # to ensure any relevant config change will trigger the dependencies
31 | # to be re-compiled.
32 | COPY config/config.exs config/${MIX_ENV}.exs config/
33 | RUN mix deps.compile
34 |
35 | COPY assets assets
36 | COPY lib lib
37 | COPY priv priv
38 |
39 | RUN mix assets
40 | RUN mix compile
41 |
42 | # Changes to config/runtime.exs don't require recompiling the code
43 | COPY config/runtime.exs config/
44 |
45 | COPY rel rel
46 | RUN mix release
47 |
48 | # start a new build stage so that the final image will only contain
49 | # the compiled release and other runtime necessities
50 | FROM ${RUNNER_IMAGE}
51 |
52 | RUN apt-get update -y && apt-get install -y libstdc++6 openssl libncurses5 locales && \
53 | apt-get clean && rm -f /var/lib/apt/lists/*_*
54 |
55 | # Set the locale
56 | RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
57 |
58 | ENV LANG en_US.UTF-8
59 | ENV LANGUAGE en_US:en
60 | ENV LC_ALL en_US.UTF-8
61 |
62 | WORKDIR "/app"
63 | RUN chown nobody /app
64 |
65 | # set runner ENV
66 | ENV MIX_ENV="prod"
67 |
68 | # Only copy the final release from the build stage
69 | COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/namor_demo ./
70 |
71 | USER nobody
72 |
73 | CMD ["/app/bin/server"]
74 |
75 | # Appended by flyctl
76 | ENV ECTO_IPV6 true
77 | ENV ERL_AFLAGS "-proto_dist inet6_tcp"
78 |
--------------------------------------------------------------------------------
/demo/README.md:
--------------------------------------------------------------------------------
1 | # NamorDemo
2 |
3 | To start your Phoenix server:
4 |
5 | * Run `mix setup` to install and setup dependencies
6 | * Start Phoenix endpoint with `mix phx.server` or inside IEx with `iex -S mix phx.server`
7 |
8 | Now you can visit [`localhost:4000`](http://localhost:4000) from your browser.
9 |
10 | Ready to run in production? Please [check our deployment guides](https://hexdocs.pm/phoenix/deployment.html).
11 |
12 | ## Learn more
13 |
14 | * Official website: https://www.phoenixframework.org/
15 | * Guides: https://hexdocs.pm/phoenix/overview.html
16 | * Docs: https://hexdocs.pm/phoenix
17 | * Forum: https://elixirforum.com/c/phoenix-forum
18 | * Source: https://github.com/phoenixframework/phoenix
19 |
--------------------------------------------------------------------------------
/demo/assets/css/app.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | .select-wrapper select {
6 | @apply text-sm border-gray-300 rounded-md shadow-sm disabled:bg-gray-100 disabled:cursor-not-allowed focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:focus:border-primary-500 dark:bg-gray-800 dark:text-gray-300 focus:outline-none;
7 | }
8 |
9 | label.has-error:not(.phx-no-feedback) {
10 | @apply !text-red-900 dark:!text-red-200;
11 | }
12 |
13 | textarea.has-error:not(.phx-no-feedback), input.has-error:not(.phx-no-feedback), select.has-error:not(.phx-no-feedback) {
14 | @apply !border-red-500 focus:!border-red-500 !text-red-900 !placeholder-red-700 !bg-red-50 dark:!text-red-100 dark:!placeholder-red-300 dark:!bg-red-900 focus:!ring-red-500;
15 | }
16 |
17 | input[type=file_input].has-error:not(.phx-no-feedback) {
18 | @apply !border-red-500 !rounded-md focus:!border-red-500 !text-red-900 !placeholder-red-700 !bg-red-50 file:!border-none dark:!border-none dark:!bg-[#160B0B] dark:text-red-400;
19 | }
20 |
21 | input[type=checkbox].has-error:not(.phx-no-feedback) {
22 | @apply !border-red-500 !text-red-900 dark:!text-red-200;
23 | }
24 |
25 | input[type=radio].has-error:not(.phx-no-feedback) {
26 | @apply !border-red-500;
27 | }
28 |
29 | /* Modal animation */
30 | .animate-fade-in-scale {
31 | animation: 0.2s ease-in 0s normal forwards 1 fade-in-scale-keys;
32 | }
33 |
34 | .animate-fade-in {
35 | animation: 0.2s ease-out 0s normal forwards 1 fade-in-keys;
36 | }
37 |
38 | @keyframes fade-in-scale-keys{
39 | 0% { scale: 0.95; opacity: 0; }
40 | 100% { scale: 1.0; opacity: 1; }
41 | }
42 |
43 | @keyframes fade-in-keys{
44 | 0% { opacity: 0; }
45 | 100% { opacity: 1; }
46 | }
47 |
--------------------------------------------------------------------------------
/demo/assets/js/app.js:
--------------------------------------------------------------------------------
1 | import "phoenix_html"
2 | import { Socket } from "phoenix"
3 | import { LiveSocket } from "phoenix_live_view"
4 | import { CopyHook } from "./copy"
5 |
6 | let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content")
7 | let liveSocket = new LiveSocket("/live", Socket, {
8 | params: {_csrf_token: csrfToken},
9 | hooks: {Copy: CopyHook}
10 | })
11 |
12 | // connect if there are any LiveViews on the page
13 | liveSocket.connect()
14 |
15 | // expose liveSocket on window for web console debug logs and latency simulation:
16 | // >> liveSocket.enableDebug()
17 | // >> liveSocket.enableLatencySim(1000) // enabled for duration of browser session
18 | // >> liveSocket.disableLatencySim()
19 | window.liveSocket = liveSocket
20 |
--------------------------------------------------------------------------------
/demo/assets/js/copy.js:
--------------------------------------------------------------------------------
1 | export const CopyHook = {
2 | mounted() {
3 | this.el.addEventListener("click", async evt => {
4 | evt.preventDefault()
5 |
6 | const text = document.querySelector(this.el.dataset.to).innerText
7 | await navigator.clipboard.writeText(text)
8 |
9 | this.el.classList.add("hidden")
10 | this.el.nextElementSibling.classList.remove("hidden")
11 |
12 | if (this.hideTimeout) {
13 | clearTimeout(this.hideTimeout)
14 | }
15 |
16 | this.hideTimeout = setTimeout(() => {
17 | this.el.classList.remove("hidden")
18 | this.el.nextElementSibling.classList.add("hidden")
19 | }, 1500)
20 | })
21 | },
22 | destroyed() {
23 | clearTimeout(this.hideTimeout)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/demo/assets/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const plugin = require("tailwindcss/plugin")
2 | const colors = require("tailwindcss/colors");
3 |
4 | module.exports = {
5 | content: [
6 | "../lib/*_web.ex",
7 | "../lib/*_web/**/*.*ex",
8 | "../deps/petal_components/**/*.*ex",
9 | ],
10 | darkMode: "class",
11 | theme: {
12 | extend: {
13 | colors: {
14 | primary: colors.blue,
15 | secondary: colors.pink,
16 | },
17 | }
18 | },
19 | plugins: [
20 | require("@tailwindcss/forms"),
21 | plugin(({ addVariant }) => addVariant("phx-no-feedback", ["&.phx-no-feedback", ".phx-no-feedback &"])),
22 | plugin(({ addVariant }) => addVariant("phx-click-loading", ["&.phx-click-loading", ".phx-click-loading &"])),
23 | plugin(({ addVariant }) => addVariant("phx-submit-loading", ["&.phx-submit-loading", ".phx-submit-loading &"])),
24 | plugin(({ addVariant }) => addVariant("phx-change-loading", ["&.phx-change-loading", ".phx-change-loading &"]))
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------
/demo/config/config.exs:
--------------------------------------------------------------------------------
1 | # This file is responsible for configuring your application
2 | # and its dependencies with the aid of the Config module.
3 | #
4 | # This configuration file is loaded before any dependency and
5 | # is restricted to this project.
6 |
7 | # General application configuration
8 | import Config
9 |
10 | # Configures the endpoint
11 | config :namor_demo, NamorDemoWeb.Endpoint,
12 | url: [host: "localhost"],
13 | pubsub_server: NamorDemo.PubSub,
14 | live_view: [signing_salt: "lHGGHnrT"],
15 | render_errors: [
16 | layout: false,
17 | formats: [html: NamorDemoWeb.ErrorHTML]
18 | ]
19 |
20 | # Configure esbuild (the version is required)
21 | config :esbuild,
22 | version: "0.15.18",
23 | default: [
24 | cd: Path.expand("../assets", __DIR__),
25 | env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)},
26 | args: ~w(
27 | --bundle
28 | --target=es2017
29 | --outdir=../priv/static/assets
30 | js/app.js
31 | )
32 | ]
33 |
34 | # Configure tailwind (the version is required)
35 | config :tailwind,
36 | version: "3.2.4",
37 | default: [
38 | cd: Path.expand("../assets", __DIR__),
39 | args: ~w(
40 | --config=tailwind.config.js
41 | --input=css/app.css
42 | --output=../priv/static/assets/app.css
43 | )
44 | ]
45 |
46 | # Configures Elixir's Logger
47 | config :logger, :console,
48 | format: "$time $metadata[$level] $message\n",
49 | metadata: [:request_id]
50 |
51 | # Use Jason for JSON parsing in Phoenix
52 | config :phoenix, :json_library, Jason
53 |
54 | # Import environment specific config. This must remain at the bottom
55 | # of this file so it overrides the configuration defined above.
56 | import_config "#{config_env()}.exs"
57 |
--------------------------------------------------------------------------------
/demo/config/dev.exs:
--------------------------------------------------------------------------------
1 | import Config
2 |
3 | # Enable dev routes for dashboard and mailbox
4 | config :namor_demo, dev_routes: true
5 |
6 | # For development, we disable any cache and enable
7 | # debugging and code reloading. The watchers configuration
8 | # can be used to run external watchers to your application.
9 | config :namor_demo, NamorDemoWeb.Endpoint,
10 | http: [ip: {0, 0, 0, 0}, port: 4000],
11 | check_origin: false,
12 | code_reloader: true,
13 | debug_errors: true,
14 | secret_key_base: "ZS05nY0jJwUW+fCjDPjYhnP0A9QEia9+hIIbt8L9vjIV62BrJluM6KX3PXKnJo07",
15 | watchers: [
16 | esbuild: {Esbuild, :install_and_run, [:default, ~w(--watch)]},
17 | tailwind: {Tailwind, :install_and_run, [:default, ~w(--watch)]}
18 | ]
19 |
20 | # Watch static and templates for browser reloading.
21 | config :namor_demo, NamorDemoWeb.Endpoint,
22 | live_reload: [
23 | patterns: [
24 | ~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$",
25 | ~r"lib/namor_demo_web/(html|layouts|live)/.*(ex|heex)$"
26 | ]
27 | ]
28 |
29 | # Do not include metadata nor timestamps in development logs
30 | config :logger, :console, format: "[$level] $message\n"
31 |
32 | # Set a higher stacktrace during development. Avoid configuring such
33 | # in production as building large stacktraces may be expensive.
34 | config :phoenix, :stacktrace_depth, 20
35 |
36 | # Initialize plugs at runtime for faster development compilation
37 | config :phoenix, :plug_init_mode, :runtime
38 |
--------------------------------------------------------------------------------
/demo/config/prod.exs:
--------------------------------------------------------------------------------
1 | import Config
2 |
3 | # For production, don't forget to configure the url host
4 | # to something meaningful, Phoenix uses this information
5 | # when generating URLs.
6 |
7 | # Note we also include the path to a cache manifest
8 | # containing the digested version of static files. This
9 | # manifest is generated by the `mix phx.digest` task,
10 | # which you should run after static files are built and
11 | # before starting your production server.
12 | config :namor_demo, NamorDemoWeb.Endpoint,
13 | cache_static_manifest: "priv/static/cache_manifest.json"
14 |
15 | # Do not print debug messages in production
16 | config :logger, level: :info
17 |
18 | # Runtime production configuration, including reading
19 | # of environment variables, is done on config/runtime.exs.
20 |
--------------------------------------------------------------------------------
/demo/config/runtime.exs:
--------------------------------------------------------------------------------
1 | import Config
2 |
3 | # config/runtime.exs is executed for all environments, including
4 | # during releases. It is executed after compilation and before the
5 | # system starts, so it is typically used to load production configuration
6 | # and secrets from environment variables or elsewhere. Do not define
7 | # any compile-time configuration in here, as it won't be applied.
8 | # The block below contains prod specific runtime configuration.
9 |
10 | # ## Using releases
11 | #
12 | # If you use `mix release`, you need to explicitly enable the server
13 | # by passing the PHX_SERVER=true when you start it:
14 | #
15 | # PHX_SERVER=true bin/namor_demo start
16 | #
17 | # Alternatively, you can use `mix phx.gen.release` to generate a `bin/server`
18 | # script that automatically sets the env var above.
19 | if System.get_env("PHX_SERVER") do
20 | config :namor_demo, NamorDemoWeb.Endpoint, server: true
21 | end
22 |
23 | if config_env() == :prod do
24 | # The secret key base is used to sign/encrypt cookies and other secrets.
25 | # A default value is used in config/dev.exs and config/test.exs but you
26 | # want to use a different value for prod and you most likely don't want
27 | # to check this value into version control, so we use an environment
28 | # variable instead.
29 | secret_key_base =
30 | System.get_env("SECRET_KEY_BASE") ||
31 | raise """
32 | environment variable SECRET_KEY_BASE is missing.
33 | You can generate one by calling: mix phx.gen.secret
34 | """
35 |
36 | host = System.get_env("PHX_HOST") || "example.com"
37 | port = String.to_integer(System.get_env("PORT") || "4000")
38 |
39 | config :namor_demo, NamorDemoWeb.Endpoint,
40 | url: [host: host, port: 443, scheme: "https"],
41 | http: [
42 | # Enable IPv6 and bind on all interfaces.
43 | # Set it to {0, 0, 0, 0, 0, 0, 0, 1} for local network only access.
44 | # See the documentation on https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html
45 | # for details about using IPv6 vs IPv4 and loopback vs public addresses.
46 | ip: {0, 0, 0, 0, 0, 0, 0, 0},
47 | port: port
48 | ],
49 | secret_key_base: secret_key_base
50 |
51 | # ## SSL Support
52 | #
53 | # To get SSL working, you will need to add the `https` key
54 | # to your endpoint configuration:
55 | #
56 | # config :namor_demo, NamorDemoWeb.Endpoint,
57 | # https: [
58 | # ...,
59 | # port: 443,
60 | # cipher_suite: :strong,
61 | # keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
62 | # certfile: System.get_env("SOME_APP_SSL_CERT_PATH")
63 | # ]
64 | #
65 | # The `cipher_suite` is set to `:strong` to support only the
66 | # latest and more secure SSL ciphers. This means old browsers
67 | # and clients may not be supported. You can set it to
68 | # `:compatible` for wider support.
69 | #
70 | # `:keyfile` and `:certfile` expect an absolute path to the key
71 | # and cert in disk or a relative path inside priv, for example
72 | # "priv/ssl/server.key". For all supported SSL configuration
73 | # options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1
74 | #
75 | # We also recommend setting `force_ssl` in your endpoint, ensuring
76 | # no data is ever sent via http, always redirecting to https:
77 | #
78 | # config :namor_demo, NamorDemoWeb.Endpoint,
79 | # force_ssl: [hsts: true]
80 | #
81 | # Check `Plug.SSL` for all available options in `force_ssl`.
82 | end
83 |
--------------------------------------------------------------------------------
/demo/config/test.exs:
--------------------------------------------------------------------------------
1 | import Config
2 |
3 | # We don't run a server during test. If one is required,
4 | # you can enable the server option below.
5 | config :namor_demo, NamorDemoWeb.Endpoint,
6 | http: [ip: {127, 0, 0, 1}, port: 4002],
7 | secret_key_base: "yVAApZKJvTm55/9YHypmkBBOWEIffe5qSYhbE6envx52JLXtyXy1oNuDNq25s53f",
8 | server: false
9 |
10 | # Print only warnings and errors during test
11 | config :logger, level: :warning
12 |
13 | # Initialize plugs at runtime for faster test compilation
14 | config :phoenix, :plug_init_mode, :runtime
15 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemo do
2 | @moduledoc """
3 | NamorDemo keeps the contexts that define your domain
4 | and business logic.
5 |
6 | Contexts are also responsible for managing your data, regardless
7 | if it comes from the database, an external API or others.
8 | """
9 | end
10 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo/application.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemo.Application do
2 | # See https://hexdocs.pm/elixir/Application.html
3 | # for more information on OTP Applications
4 | @moduledoc false
5 |
6 | use Application
7 |
8 | @impl true
9 | def start(_type, _args) do
10 | children = [
11 | # Start the Telemetry supervisor
12 | NamorDemoWeb.Telemetry,
13 | # Start the PubSub system
14 | {Phoenix.PubSub, name: NamorDemo.PubSub},
15 | # Start the Endpoint (http/https)
16 | NamorDemoWeb.Endpoint
17 | # Start a worker by calling: NamorDemo.Worker.start_link(arg)
18 | # {NamorDemo.Worker, arg}
19 | ]
20 |
21 | # See https://hexdocs.pm/elixir/Supervisor.html
22 | # for other strategies and supported options
23 | opts = [strategy: :one_for_one, name: NamorDemo.Supervisor]
24 | Supervisor.start_link(children, opts)
25 | end
26 |
27 | # Tell Phoenix to update the endpoint configuration
28 | # whenever the application is updated.
29 | @impl true
30 | def config_change(changed, _new, removed) do
31 | NamorDemoWeb.Endpoint.config_change(changed, removed)
32 | :ok
33 | end
34 | end
35 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo/params.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemo.Params do
2 | import Ecto.Changeset
3 |
4 | alias __MODULE__
5 |
6 | defstruct [:words, :salt, :salt_type, :separator, :dictionary]
7 |
8 | @types %{
9 | words: :integer,
10 | salt: :integer,
11 | salt_type: {:parameterized, Ecto.Enum, Ecto.Enum.init(values: [:mixed, :letters, :numbers])},
12 | separator: :string,
13 | dictionary: {:parameterized, Ecto.Enum, Ecto.Enum.init(values: [:default, :rugged])}
14 | }
15 |
16 | def changeset(%Params{} = params, attrs \\ %{}) do
17 | {params, @types}
18 | |> cast(attrs, Map.keys(@types), empty_values: [])
19 | |> validate_number(:words, greater_than: 0, less_than_or_equal_to: 4)
20 | |> validate_number(:salt, greater_than_or_equal_to: 0)
21 | |> validate_length(:separator, min: 0, max: 10)
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemoWeb do
2 | @moduledoc """
3 | The entrypoint for defining your web interface, such
4 | as controllers, components, channels, and so on.
5 |
6 | This can be used in your application as:
7 |
8 | use NamorDemoWeb, :controller
9 | use NamorDemoWeb, :html
10 |
11 | The definitions below will be executed for every controller,
12 | component, etc, so keep them short and clean, focused
13 | on imports, uses and aliases.
14 |
15 | Do NOT define functions inside the quoted expressions
16 | below. Instead, define additional modules and import
17 | those modules here.
18 | """
19 |
20 | def static_paths, do: ~w(assets robots.txt)
21 |
22 | def router do
23 | quote do
24 | use Phoenix.Router
25 |
26 | # Import common connection and controller functions to use in pipelines
27 | import Plug.Conn
28 | import Phoenix.Controller
29 | import Phoenix.LiveView.Router
30 | end
31 | end
32 |
33 | def channel do
34 | quote do
35 | use Phoenix.Channel
36 | end
37 | end
38 |
39 | def controller do
40 | quote do
41 | use Phoenix.Controller,
42 | formats: [:html],
43 | layouts: [html: NamorDemoWeb.Layouts]
44 |
45 | import Plug.Conn
46 |
47 | unquote(verified_routes())
48 | end
49 | end
50 |
51 | def live_view do
52 | quote do
53 | use Phoenix.LiveView
54 |
55 | unquote(html_helpers())
56 | end
57 | end
58 |
59 | def live_component do
60 | quote do
61 | use Phoenix.LiveComponent
62 |
63 | unquote(html_helpers())
64 | end
65 | end
66 |
67 | def html do
68 | quote do
69 | use Phoenix.Component
70 |
71 | # Import convenience functions from controllers
72 | import Phoenix.Controller,
73 | only: [get_csrf_token: 0, view_module: 1, view_template: 1]
74 |
75 | # Include general helpers for rendering HTML
76 | unquote(html_helpers())
77 | end
78 | end
79 |
80 | defp html_helpers do
81 | quote do
82 | use PetalComponents
83 | use Phoenix.HTML
84 |
85 | alias NamorDemoWeb.Router.Helpers, as: Routes
86 | alias Phoenix.LiveView.JS
87 |
88 | # Routes generation with the ~p sigil
89 | unquote(verified_routes())
90 | end
91 | end
92 |
93 | def verified_routes do
94 | quote do
95 | use Phoenix.VerifiedRoutes,
96 | endpoint: NamorDemoWeb.Endpoint,
97 | router: NamorDemoWeb.Router,
98 | statics: NamorDemoWeb.static_paths()
99 | end
100 | end
101 |
102 | @doc """
103 | When used, dispatch to the appropriate controller/view/etc.
104 | """
105 | defmacro __using__(which) when is_atom(which) do
106 | apply(__MODULE__, which, [])
107 | end
108 | end
109 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web/endpoint.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemoWeb.Endpoint do
2 | use Phoenix.Endpoint, otp_app: :namor_demo
3 |
4 | # The session will be stored in the cookie and signed,
5 | # this means its contents can be read but not tampered with.
6 | # Set :encryption_salt if you would also like to encrypt it.
7 | @session_options [
8 | store: :cookie,
9 | key: "_namor_demo_session",
10 | signing_salt: "EUT9OBsN",
11 | same_site: "Lax"
12 | ]
13 |
14 | socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]]
15 |
16 | # Serve at "/" the static files from "priv/static" directory.
17 | #
18 | # You should set gzip to true if you are running phx.digest
19 | # when deploying your static files in production.
20 | plug Plug.Static,
21 | at: "/",
22 | from: :namor_demo,
23 | gzip: false,
24 | only: NamorDemoWeb.static_paths()
25 |
26 | # Code reloading can be explicitly enabled under the
27 | # :code_reloader configuration of your endpoint.
28 | if code_reloading? do
29 | socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
30 | plug Phoenix.LiveReloader
31 | plug Phoenix.CodeReloader
32 | end
33 |
34 | plug Plug.RequestId
35 | plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint]
36 |
37 | plug Plug.Parsers,
38 | parsers: [:urlencoded, :multipart, :json],
39 | pass: ["*/*"],
40 | json_decoder: Phoenix.json_library()
41 |
42 | plug Plug.MethodOverride
43 | plug Plug.Head
44 | plug Plug.Session, @session_options
45 | plug NamorDemoWeb.Router
46 | end
47 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web/html/error_html.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemoWeb.ErrorHTML do
2 | use NamorDemoWeb, :html
3 |
4 | # If you want to customize your error pages,
5 | # uncomment the embed_templates/1 call below
6 | # and add pages to the error directory:
7 | #
8 | # * lib/namor_demo_web/controllers/error_html/404.html.heex
9 | # * lib/namor_demo_web/controllers/error_html/500.html.heex
10 | #
11 | # embed_templates "error_html/*"
12 |
13 | # The default is to render a plain text page based on
14 | # the template name. For example, "404.html" becomes
15 | # "Not Found".
16 | def render(template, _assigns) do
17 | Phoenix.Controller.status_message_from_template(template)
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web/layouts.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemoWeb.Layouts do
2 | use NamorDemoWeb, :html
3 |
4 | embed_templates "layouts/*"
5 | end
6 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web/layouts/root.html.heex:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Namor Demo
10 |
11 |
12 |
13 |
14 |
15 | <%= @inner_content %>
16 |
17 |
18 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web/live/index_live.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemoWeb.IndexLive do
2 | use NamorDemoWeb, :live_view
3 | use Namor
4 |
5 | alias NamorDemo.Params
6 |
7 | def handle_params(params, uri, socket) do
8 | changeset =
9 | Params.changeset(%Params{}, %{
10 | words: Map.get(params, "words", "2") |> String.to_integer(),
11 | salt: Map.get(params, "salt", "0") |> String.to_integer(),
12 | salt_type: Map.get(params, "salt_type", "mixed") |> String.to_existing_atom(),
13 | separator: Map.get(params, "separator", "-") |> to_string(),
14 | dictionary: Map.get(params, "dictionary", "default") |> String.to_existing_atom()
15 | })
16 |
17 | socket =
18 | socket
19 | |> assign(:uri, URI.parse(uri))
20 | |> assign(:changeset, changeset)
21 | |> assign(:name, nil)
22 |
23 | socket =
24 | case Ecto.Changeset.apply_action(changeset, :validate) do
25 | {:ok, data} ->
26 | if connected?(socket), do: assign(socket, :name, generate_name(data)), else: socket
27 |
28 | {:error, changeset} ->
29 | assign(socket, :changeset, changeset)
30 | end
31 |
32 | {:noreply, socket}
33 | end
34 |
35 | def handle_event("generate", %{"_target" => ["params", target], "params" => params}, socket) do
36 | query = %{target => Map.get(params, target)}
37 | {:noreply, push_patch(socket, to: get_path(socket, query))}
38 | end
39 |
40 | def handle_event("regenerate", _values, socket) do
41 | {:noreply, push_patch(socket, to: get_path(socket))}
42 | end
43 |
44 | defp get_path(socket, query \\ %{}) do
45 | query =
46 | URI.decode_query(socket.assigns.uri.query || "")
47 | |> Map.merge(query)
48 |
49 | Routes.live_path(socket, __MODULE__, query)
50 | end
51 |
52 | defp generate_name(%Params{} = params) do
53 | {:ok, name} =
54 | Namor.generate(
55 | words: params.words,
56 | salt: params.salt,
57 | salt_type: params.salt_type,
58 | separator: params.separator,
59 | dictionary: params.dictionary
60 | )
61 |
62 | name
63 | end
64 | end
65 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web/live/index_live.html.heex:
--------------------------------------------------------------------------------
1 |
2 | <.form
3 | :let={f}
4 | for={@changeset}
5 | class="grid gap-4 grid-cols-2 sm:grid-cols-3 px-10 py-8 [&>div]:mb-0"
6 | phx-change="generate"
7 | >
8 | <.form_field form={f} field={:words} type="number_input" min="1" max="4" />
9 | <.form_field form={f} field={:separator} type="text_input" />
10 | <.form_field form={f} field={:dictionary} type="select" options={[:default, :rugged]} />
11 |
12 | <.form_field form={f} field={:salt} type="number_input" min="0" />
13 | <.form_field
14 | form={f}
15 | field={:salt_type}
16 | type="select"
17 | label="Salt Type"
18 | options={[:mixed, :letters, :numbers]}
19 | />
20 |
21 |
22 |
23 |
27 | <%= @name %>
28 |
29 |
30 | <.link
31 | id="copy-button"
32 | class="p-1.5 rounded-full text-slate-400 hover:text-slate-500 bg-trasparent hover:bg-slate-200"
33 | phx-hook="Copy"
34 | data-to="#generated-name"
35 | >
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | <.button
47 | with_icon
48 | color="info"
49 | variant="shadow"
50 | class="w-full sm:w-auto mb-4 sm:mb-0 sm:mr-4"
51 | phx-click="regenerate"
52 | >
53 |
54 | Regenerate
55 |
56 |
57 | <.button
58 | with_icon
59 | color="white"
60 | variant="shadow"
61 | class="w-full sm:w-auto"
62 | link_type="live_patch"
63 | to={~p"/"}
64 | >
65 |
66 | Reset Params
67 |
68 |
69 |
70 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web/router.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemoWeb.Router do
2 | use NamorDemoWeb, :router
3 |
4 | pipeline :browser do
5 | plug :accepts, ["html"]
6 | plug :fetch_session
7 | plug :fetch_live_flash
8 | plug :protect_from_forgery
9 | plug :put_secure_browser_headers
10 | plug :put_root_layout, {NamorDemoWeb.Layouts, :root}
11 | end
12 |
13 | scope "/", NamorDemoWeb do
14 | pipe_through [:browser]
15 |
16 | live "/", IndexLive
17 | end
18 | end
19 |
--------------------------------------------------------------------------------
/demo/lib/namor_demo_web/telemetry.ex:
--------------------------------------------------------------------------------
1 | defmodule NamorDemoWeb.Telemetry do
2 | use Supervisor
3 | import Telemetry.Metrics
4 |
5 | def start_link(arg) do
6 | Supervisor.start_link(__MODULE__, arg, name: __MODULE__)
7 | end
8 |
9 | @impl true
10 | def init(_arg) do
11 | children = [
12 | # Telemetry poller will execute the given period measurements
13 | # every 10_000ms. Learn more here: https://hexdocs.pm/telemetry_metrics
14 | {:telemetry_poller, measurements: periodic_measurements(), period: 10_000}
15 | # Add reporters as children of your supervision tree.
16 | # {Telemetry.Metrics.ConsoleReporter, metrics: metrics()}
17 | ]
18 |
19 | Supervisor.init(children, strategy: :one_for_one)
20 | end
21 |
22 | def metrics do
23 | [
24 | # Phoenix Metrics
25 | summary("phoenix.endpoint.start.system_time",
26 | unit: {:native, :millisecond}
27 | ),
28 | summary("phoenix.endpoint.stop.duration",
29 | unit: {:native, :millisecond}
30 | ),
31 | summary("phoenix.router_dispatch.start.system_time",
32 | tags: [:route],
33 | unit: {:native, :millisecond}
34 | ),
35 | summary("phoenix.router_dispatch.exception.duration",
36 | tags: [:route],
37 | unit: {:native, :millisecond}
38 | ),
39 | summary("phoenix.router_dispatch.stop.duration",
40 | tags: [:route],
41 | unit: {:native, :millisecond}
42 | ),
43 | summary("phoenix.socket_connected.duration",
44 | unit: {:native, :millisecond}
45 | ),
46 | summary("phoenix.channel_join.duration",
47 | unit: {:native, :millisecond}
48 | ),
49 | summary("phoenix.channel_handled_in.duration",
50 | tags: [:event],
51 | unit: {:native, :millisecond}
52 | ),
53 |
54 | # VM Metrics
55 | summary("vm.memory.total", unit: {:byte, :kilobyte}),
56 | summary("vm.total_run_queue_lengths.total"),
57 | summary("vm.total_run_queue_lengths.cpu"),
58 | summary("vm.total_run_queue_lengths.io")
59 | ]
60 | end
61 |
62 | defp periodic_measurements do
63 | [
64 | # A module, function and arguments to be invoked periodically.
65 | # This function must call :telemetry.execute/3 and a metric must be added above.
66 | # {NamorDemoWeb, :count_users, []}
67 | ]
68 | end
69 | end
70 |
--------------------------------------------------------------------------------
/demo/mix.exs:
--------------------------------------------------------------------------------
1 | defmodule NamorDemo.MixProject do
2 | use Mix.Project
3 |
4 | def project do
5 | [
6 | app: :namor_demo,
7 | version: "1.0.0",
8 | elixir: "~> 1.14",
9 | elixirc_paths: elixirc_paths(Mix.env()),
10 | start_permanent: Mix.env() == :prod,
11 | aliases: aliases(),
12 | deps: deps()
13 | ]
14 | end
15 |
16 | # Configuration for the OTP application.
17 | #
18 | # Type `mix help compile.app` for more information.
19 | def application do
20 | [
21 | mod: {NamorDemo.Application, []},
22 | extra_applications: [:logger, :runtime_tools]
23 | ]
24 | end
25 |
26 | # Specifies which paths to compile per environment.
27 | defp elixirc_paths(:test), do: ["lib", "test/support"]
28 | defp elixirc_paths(_), do: ["lib"]
29 |
30 | # Specifies your project dependencies.
31 | #
32 | # Type `mix help deps` for examples and options.
33 | defp deps do
34 | [
35 | {:ecto_sql, "~> 3.6"},
36 | {:esbuild, "~> 0.5", runtime: Mix.env() == :dev},
37 | {:floki, "~> 0.30", only: :test},
38 | {:jason, "~> 1.2"},
39 | {:namor, "~> 1.0"},
40 | {:petal_components, "~> 0.19"},
41 | {:phoenix, "~> 1.7.0-rc.2", override: true},
42 | {:phoenix_html, "~> 3.0"},
43 | {:phoenix_live_reload, "~> 1.2", only: :dev},
44 | {:phoenix_live_view, "~> 0.18.3"},
45 | {:plug_cowboy, "~> 2.5"},
46 | {:tailwind, "~> 0.1", runtime: Mix.env() == :dev},
47 | {:telemetry_metrics, "~> 0.6"},
48 | {:telemetry_poller, "~> 1.0"}
49 | ]
50 | end
51 |
52 | # Aliases are shortcuts or tasks specific to the current project.
53 | # For example, to install project dependencies and perform other setup tasks, run:
54 | #
55 | # $ mix setup
56 | #
57 | # See the documentation for `Mix` for more info on aliases.
58 | defp aliases do
59 | [
60 | setup: [
61 | "deps.get"
62 | ],
63 | assets: [
64 | "esbuild default --minify",
65 | "tailwind default --minify",
66 | "phx.digest"
67 | ]
68 | ]
69 | end
70 | end
71 |
--------------------------------------------------------------------------------
/demo/mix.lock:
--------------------------------------------------------------------------------
1 | %{
2 | "castore": {:hex, :castore, "1.0.0", "c25cd0794c054ebe6908a86820c8b92b5695814479ec95eeff35192720b71eec", [:mix], [], "hexpm", "577d0e855983a97ca1dfa33cbb8a3b6ece6767397ffb4861514343b078fc284b"},
3 | "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
4 | "cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"},
5 | "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
6 | "cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},
7 | "db_connection": {:hex, :db_connection, "2.4.3", "3b9aac9f27347ec65b271847e6baeb4443d8474289bd18c1d6f4de655b70c94d", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c127c15b0fa6cfb32eed07465e05da6c815b032508d4ed7c116122871df73c12"},
8 | "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"},
9 | "ecto": {:hex, :ecto, "3.9.4", "3ee68e25dbe0c36f980f1ba5dd41ee0d3eb0873bccae8aeaf1a2647242bffa35", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "de5f988c142a3aa4ec18b85a4ec34a2390b65b24f02385c1144252ff6ff8ee75"},
10 | "ecto_sql": {:hex, :ecto_sql, "3.9.2", "34227501abe92dba10d9c3495ab6770e75e79b836d114c41108a4bf2ce200ad5", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9.2", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1eb5eeb4358fdbcd42eac11c1fbd87e3affd7904e639d77903c1358b2abd3f70"},
11 | "esbuild": {:hex, :esbuild, "0.6.0", "9ba6ead054abd43cb3d7b14946a0cdd1493698ccd8e054e0e5d6286d7f0f509c", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "30f9a05d4a5bab0d3e37398f312f80864e1ee1a081ca09149d06d474318fd040"},
12 | "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
13 | "floki": {:hex, :floki, "0.34.0", "002d0cc194b48794d74711731db004fafeb328fe676976f160685262d43706a8", [:mix], [], "hexpm", "9c3a9f43f40dde00332a589bd9d389b90c1f518aef500364d00636acc5ebc99c"},
14 | "heroicons": {:hex, :heroicons, "0.5.2", "a7ae72460ecc4b74a4ba9e72f0b5ac3c6897ad08968258597da11c2b0b210683", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.18.2", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}], "hexpm", "7ef96f455c1c136c335f1da0f1d7b12c34002c80a224ad96fc0ebf841a6ffef5"},
15 | "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
16 | "mime": {:hex, :mime, "2.0.3", "3676436d3d1f7b81b5a2d2bd8405f412c677558c81b1c92be58c00562bb59095", [:mix], [], "hexpm", "27a30bf0db44d25eecba73755acf4068cbfe26a4372f9eb3e4ea3a45956bff6b"},
17 | "namor": {:hex, :namor, "1.0.2", "40adee94b36e99b646c71c3390c9f5a22162b96ba81cb51bb2152a9579dca910", [:mix], [], "hexpm", "daa15305eea295b02069d6ca44fba89814163ea168f9ac96948ba91d2c9bfa24"},
18 | "petal_components": {:hex, :petal_components, "0.19.10", "a8d9aba43885d99f2f0770c0932aeae75e18f41741d7a480c6bbbbb645e48bd9", [:mix], [{:heroicons, "~> 0.5.0", [hex: :heroicons, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_ecto, "~> 4.4", [hex: :phoenix_ecto, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.18.3", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}], "hexpm", "023d80fe16ce032f2323d86b1b63aa3c1190d17366c83541ab4273b44b14bdca"},
19 | "phoenix": {:hex, :phoenix, "1.7.0-rc.2", "8faaff6f699aad2fe6a003c627da65d0864c868a4c10973ff90abfd7286c1f27", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.4", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "71abde2f67330c55b625dcc0e42bf76662dbadc7553c4f545c2f3759f40f7487"},
20 | "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"},
21 | "phoenix_html": {:hex, :phoenix_html, "3.2.0", "1c1219d4b6cb22ac72f12f73dc5fad6c7563104d083f711c3fcd8551a1f4ae11", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "36ec97ba56d25c0136ef1992c37957e4246b649d620958a1f9fa86165f8bc54f"},
22 | "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
23 | "phoenix_live_view": {:hex, :phoenix_live_view, "0.18.11", "c50eac83dae6b5488859180422dfb27b2c609de87f4aa5b9c926ecd0501cd44f", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "76c99a0ffb47cd95bf06a917e74f282a603f3e77b00375f3c2dd95110971b102"},
24 | "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"},
25 | "phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"},
26 | "plug": {:hex, :plug, "1.14.0", "ba4f558468f69cbd9f6b356d25443d0b796fbdc887e03fa89001384a9cac638f", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "bf020432c7d4feb7b3af16a0c2701455cbbbb95e5b6866132cb09eb0c29adc14"},
27 | "plug_cowboy": {:hex, :plug_cowboy, "2.6.0", "d1cf12ff96a1ca4f52207c5271a6c351a4733f413803488d75b70ccf44aebec2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "073cf20b753ce6682ed72905cd62a2d4bd9bad1bf9f7feb02a1b8e525bd94fa6"},
28 | "plug_crypto": {:hex, :plug_crypto, "1.2.3", "8f77d13aeb32bfd9e654cb68f0af517b371fb34c56c9f2b58fe3df1235c1251a", [:mix], [], "hexpm", "b5672099c6ad5c202c45f5a403f21a3411247f164e4a8fab056e5cd8a290f4a2"},
29 | "ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
30 | "tailwind": {:hex, :tailwind, "0.1.9", "25ba09d42f7bfabe170eb67683a76d6ec2061952dc9bd263a52a99ba3d24bd4d", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "9213f87709c458aaec313bb5f2df2b4d2cedc2b630e4ae821bf3c54c47a56d0b"},
31 | "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
32 | "telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
33 | "telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
34 | "websock": {:hex, :websock, "0.4.3", "184ac396bdcd3dfceb5b74c17d221af659dd559a95b1b92041ecb51c9b728093", [:mix], [], "hexpm", "5e4dd85f305f43fd3d3e25d70bec4a45228dfed60f0f3b072d8eddff335539cf"},
35 | "websock_adapter": {:hex, :websock_adapter, "0.4.5", "30038a3715067f51a9580562c05a3a8d501126030336ffc6edb53bf57d6d2d26", [:mix], [{:bandit, "~> 0.6", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.4", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "1d9812dc7e703c205049426fd4fe0852a247a825f91b099e53dc96f68bafe4c8"},
36 | }
37 |
--------------------------------------------------------------------------------
/demo/priv/static/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/demo/rel/overlays/bin/server:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | cd -P -- "$(dirname -- "$0")"
3 | PHX_SERVER=true exec ./namor_demo start
4 |
--------------------------------------------------------------------------------
/demo/rel/overlays/bin/server.bat:
--------------------------------------------------------------------------------
1 | set PHX_SERVER=true
2 | call "%~dp0\namor_demo" start
3 |
--------------------------------------------------------------------------------
/dict/default/adjectives.txt:
--------------------------------------------------------------------------------
1 | a
2 | aback
3 | abaft
4 | abandoned
5 | abashed
6 | abdominal
7 | aberrant
8 | abhorrent
9 | abiding
10 | abject
11 | ablaze
12 | able
13 | abnormal
14 | aboard
15 | aboriginal
16 | abortive
17 | abounding
18 | abrasive
19 | abrupt
20 | absent
21 | absentminded
22 | absolute
23 | absorbed
24 | absorbing
25 | abstracted
26 | absurd
27 | abundant
28 | abusive
29 | abysmal
30 | academic
31 | acceptable
32 | accepting
33 | accessible
34 | accidental
35 | acclaimed
36 | accommodating
37 | accompanying
38 | accountable
39 | accurate
40 | accusative
41 | accused
42 | accusing
43 | acerbic
44 | achievable
45 | aching
46 | acid
47 | acidic
48 | acknowledged
49 | acoustic
50 | acrid
51 | acrimonious
52 | acrobatic
53 | actionable
54 | active
55 | actual
56 | actually
57 | ad hoc
58 | adamant
59 | adaptable
60 | adaptive
61 | addicted
62 | addictive
63 | additional
64 | adept
65 | adequate
66 | adhesive
67 | adhoc
68 | adjacent
69 | adjoining
70 | adjustable
71 | administrative
72 | admirable
73 | admired
74 | admiring
75 | adopted
76 | adoptive
77 | adorable
78 | adored
79 | adoring
80 | adrenalized
81 | adroit
82 | adult
83 | advanced
84 | advantageous
85 | adventurous
86 | adversarial
87 | advisable
88 | aerial
89 | affable
90 | affected
91 | affectionate
92 | affirmative
93 | affordable
94 | afraid
95 | afternoon
96 | ageless
97 | aggravated
98 | aggravating
99 | aggressive
100 | agitated
101 | agonizing
102 | agrarian
103 | agreeable
104 | ahead
105 | aimless
106 | airsick
107 | ajar
108 | alarmed
109 | alarming
110 | alcoholic
111 | alert
112 | algebraic
113 | alien
114 | alienated
115 | alike
116 | alive
117 | all
118 | alleged
119 | allowable
120 | alluring
121 | allusive
122 | alone
123 | aloof
124 | alterable
125 | alternating
126 | alternative
127 | amazed
128 | amazing
129 | ambiguous
130 | ambitious
131 | ambulant
132 | ambulatory
133 | american
134 | amiable
135 | amicable
136 | amphibian
137 | amuck
138 | amused
139 | amusing
140 | an
141 | ancient
142 | anecdotal
143 | anemic
144 | angelic
145 | angered
146 | angry
147 | angular
148 | animated
149 | annoyed
150 | annoying
151 | annual
152 | another
153 | antagonistic
154 | anticipated
155 | anticlimactic
156 | anticorrosive
157 | antiquated
158 | antiseptic
159 | antisocial
160 | antsy
161 | anxious
162 | any
163 | apathetic
164 | apologetic
165 | apologizing
166 | appalling
167 | appealing
168 | appetizing
169 | applauding
170 | applicable
171 | applicative
172 | appreciative
173 | apprehensive
174 | approachable
175 | approaching
176 | appropriate
177 | approving
178 | approximate
179 | aquatic
180 | architectural
181 | ardent
182 | arduous
183 | arguable
184 | argumentative
185 | arid
186 | aristocratic
187 | aromatic
188 | arresting
189 | arrogant
190 | artful
191 | artificial
192 | artistic
193 | artless
194 | ashamed
195 | asleep
196 | aspiring
197 | assertive
198 | assignable
199 | assorted
200 | assumable
201 | assured
202 | assuring
203 | astonished
204 | astonishing
205 | astounded
206 | astounding
207 | astringent
208 | astronomical
209 | astute
210 | asymmetrical
211 | athletic
212 | atomic
213 | atrocious
214 | attachable
215 | attainable
216 | attentive
217 | attractive
218 | attributable
219 | atypical
220 | audacious
221 | auspicious
222 | authentic
223 | authoritarian
224 | authoritative
225 | autobiographic
226 | autographed
227 | automatic
228 | autonomous
229 | available
230 | avenging
231 | average
232 | avian
233 | avid
234 | avoidable
235 | awake
236 | awakening
237 | aware
238 | away
239 | awesome
240 | awful
241 | awkward
242 | axiomatic
243 | babbling
244 | backhanded
245 | bacterial
246 | bad
247 | baffled
248 | baffling
249 | bald
250 | balding
251 | balmy
252 | bandaged
253 | banging
254 | bankable
255 | banned
256 | bantering
257 | barbaric
258 | barbarous
259 | barbequed
260 | barefooted
261 | barking
262 | barren
263 | bashful
264 | basic
265 | battered
266 | batty
267 | bawdy
268 | bawling
269 | beady
270 | beaming
271 | bearable
272 | beautiful
273 | beckoning
274 | bedazzled
275 | bedazzling
276 | beefy
277 | beeping
278 | befitting
279 | befuddled
280 | beginning
281 | belching
282 | believable
283 | bellicose
284 | belligerent
285 | bellowing
286 | bendable
287 | beneficial
288 | benevolent
289 | benign
290 | bent
291 | berserk
292 | best
293 | betrayed
294 | better
295 | better off
296 | bewildered
297 | bewildering
298 | bewitched
299 | bewitching
300 | biased
301 | biblical
302 | big
303 | bigger
304 | biggest
305 | bighearted
306 | bigoted
307 | bilingual
308 | billable
309 | billowy
310 | binary
311 | binding
312 | bioactive
313 | biodegradable
314 | biographical
315 | bitesized
316 | biting
317 | bitter
318 | bizarre
319 | black
320 | blamable
321 | blameless
322 | bland
323 | blank
324 | blaring
325 | blasphemous
326 | blatant
327 | blazing
328 | bleached
329 | bleak
330 | bleary
331 | blessed
332 | blind
333 | blindfolded
334 | blinding
335 | blissful
336 | blistering
337 | bloated
338 | blonde
339 | bloodied
340 | bloodthirsty
341 | bloody
342 | blooming
343 | blossoming
344 | blue
345 | blueeyed
346 | blundering
347 | blunt
348 | blurred
349 | blurry
350 | blushing
351 | boastful
352 | bodacious
353 | bohemian
354 | boiling
355 | boisterous
356 | bold
357 | bookish
358 | booming
359 | boorish
360 | bordering
361 | bored
362 | boring
363 | born
364 | bossy
365 | both
366 | bothered
367 | bouncing
368 | bouncy
369 | boundless
370 | bountiful
371 | boyish
372 | braided
373 | brainless
374 | brainy
375 | brash
376 | brassy
377 | brave
378 | brawny
379 | brazen
380 | breakable
381 | breathable
382 | breathless
383 | breathtaking
384 | breezy
385 | bribable
386 | brief
387 | bright
388 | brilliant
389 | briny
390 | brisk
391 | bristly
392 | broad
393 | broken
394 | bronchial
395 | bronzed
396 | brooding
397 | brown
398 | bruised
399 | brunette
400 | brutal
401 | brutish
402 | bubbly
403 | bulky
404 | bumpy
405 | bungling
406 | buoyant
407 | bureaucratic
408 | burly
409 | burnable
410 | burning
411 | bushy
412 | busiest
413 | bustling
414 | busy
415 | buzzing
416 | cackling
417 | caged
418 | cagey
419 | calculable
420 | calculated
421 | calculating
422 | callous
423 | calm
424 | calming
425 | camouflaged
426 | cancelled
427 | cancerous
428 | candid
429 | cantankerous
430 | capable
431 | capricious
432 | captivated
433 | captivating
434 | captive
435 | carefree
436 | careful
437 | careless
438 | caring
439 | carnivorous
440 | carpeted
441 | carsick
442 | casual
443 | catastrophic
444 | catatonic
445 | catchable
446 | caustic
447 | cautious
448 | cavalier
449 | cavernous
450 | ceaseless
451 | celebrated
452 | celestial
453 | centered
454 | central
455 | cerebral
456 | ceremonial
457 | certain
458 | certifiable
459 | certified
460 | challenged
461 | challenging
462 | changeable
463 | changing
464 | chanting
465 | charging
466 | charismatic
467 | charitable
468 | charmed
469 | charming
470 | chattering
471 | chatting
472 | chatty
473 | chauvinistic
474 | cheap
475 | cheapest
476 | cheeky
477 | cheerful
478 | cheering
479 | cheerless
480 | cheery
481 | chemical
482 | chewable
483 | chewy
484 | chic
485 | chief
486 | childish
487 | childlike
488 | chilling
489 | chilly
490 | chivalrous
491 | choice
492 | choking
493 | choppy
494 | chronological
495 | chubby
496 | chuckling
497 | chunky
498 | cinematic
499 | circling
500 | circular
501 | circumstantial
502 | civil
503 | civilian
504 | civilized
505 | clammy
506 | clamoring
507 | clandestine
508 | clanging
509 | clapping
510 | clashing
511 | classic
512 | classical
513 | classifiable
514 | classified
515 | classy
516 | clean
517 | cleanable
518 | clear
519 | cleared
520 | clearheaded
521 | clever
522 | climatic
523 | climbable
524 | clinging
525 | clingy
526 | clinical
527 | cliquish
528 | clogged
529 | cloistered
530 | close
531 | closeable
532 | closed
533 | cloudless
534 | cloudy
535 | clownish
536 | clueless
537 | clumsy
538 | cluttered
539 | coachable
540 | coarse
541 | cockamamie
542 | cocky
543 | codified
544 | coercive
545 | cognitive
546 | coherent
547 | cohesive
548 | coincidental
549 | cold
550 | coldhearted
551 | collaborative
552 | collapsed
553 | collapsing
554 | collectable
555 | collegial
556 | colloquial
557 | colonial
558 | colorful
559 | colorless
560 | colossal
561 | combative
562 | combined
563 | comfortable
564 | comforted
565 | comforting
566 | comical
567 | commanding
568 | commemorative
569 | commendable
570 | commercial
571 | committed
572 | common
573 | communal
574 | communicable
575 | communicative
576 | communist
577 | compact
578 | comparable
579 | comparative
580 | compassionate
581 | compelling
582 | competent
583 | competitive
584 | complacent
585 | complaining
586 | complete
587 | completed
588 | complex
589 | compliant
590 | complicated
591 | complimentary
592 | compound
593 | comprehensive
594 | compulsive
595 | compulsory
596 | computerized
597 | concealable
598 | concealed
599 | conceited
600 | conceivable
601 | concerned
602 | concerning
603 | concerted
604 | concise
605 | concurrent
606 | condemned
607 | condensed
608 | condescending
609 | conditional
610 | confident
611 | confidential
612 | confirmable
613 | confirmed
614 | conflicted
615 | conflicting
616 | conformable
617 | confounded
618 | confused
619 | confusing
620 | congenial
621 | congested
622 | congressional
623 | congruent
624 | congruous
625 | connectable
626 | connected
627 | connecting
628 | connective
629 | conscientious
630 | conscious
631 | consecutive
632 | consensual
633 | consenting
634 | conservative
635 | considerable
636 | considerate
637 | consistent
638 | consoling
639 | conspicuous
640 | conspiratorial
641 | constant
642 | constitutional
643 | constrictive
644 | constructive
645 | consumable
646 | consummate
647 | contagious
648 | containable
649 | contemplative
650 | contemporary
651 | contemptible
652 | contemptuous
653 | content
654 | contented
655 | contentious
656 | contextual
657 | continual
658 | continuing
659 | continuous
660 | contoured
661 | contractual
662 | contradicting
663 | contradictory
664 | contrarian
665 | contrary
666 | contributive
667 | contrite
668 | controllable
669 | controlling
670 | controversial
671 | convenient
672 | conventional
673 | conversational
674 | convinced
675 | convincing
676 | convoluted
677 | convulsive
678 | cooing
679 | cooked
680 | cool
681 | coolest
682 | cooperative
683 | coordinated
684 | copious
685 | coquettish
686 | cordial
687 | cornered
688 | corny
689 | corporate
690 | corpulent
691 | correct
692 | correctable
693 | corrective
694 | corresponding
695 | corrosive
696 | corrupt
697 | corrupting
698 | corruptive
699 | cosmetic
700 | cosmic
701 | costly
702 | cottony
703 | coughing
704 | courageous
705 | courteous
706 | covert
707 | coveted
708 | cowardly
709 | cowering
710 | coy
711 | cozy
712 | crabby
713 | cracked
714 | crackling
715 | crafty
716 | craggy
717 | crammed
718 | cramped
719 | cranky
720 | crashing
721 | crass
722 | craven
723 | crawling
724 | crazy
725 | creaking
726 | creaky
727 | creamy
728 | creative
729 | credible
730 | creeping
731 | creepy
732 | crestfallen
733 | criminal
734 | crippled
735 | crippling
736 | crisp
737 | crispy
738 | critical
739 | crooked
740 | cropped
741 | cross
742 | crossed
743 | crotchety
744 | crowded
745 | crucial
746 | crude
747 | cruel
748 | crumbling
749 | crumbly
750 | crumply
751 | crunchable
752 | crunching
753 | crunchy
754 | crushable
755 | crushed
756 | crusty
757 | crying
758 | cryptic
759 | crystalline
760 | crystallized
761 | cuddly
762 | culpable
763 | cultural
764 | cultured
765 | cumbersome
766 | cumulative
767 | cunning
768 | curable
769 | curative
770 | curious
771 | curly
772 | current
773 | cursed
774 | curt
775 | curved
776 | curvy
777 | customary
778 | cut
779 | cute
780 | cutting
781 | cylindrical
782 | cynical
783 | daffy
784 | daft
785 | daily
786 | dainty
787 | damaged
788 | damaging
789 | damp
790 | danceable
791 | dandy
792 | dangerous
793 | dapper
794 | daring
795 | dark
796 | darkened
797 | dashing
798 | daughterly
799 | daunting
800 | dawdling
801 | dazed
802 | dazzling
803 | dead
804 | deadly
805 | deadpan
806 | deaf
807 | deafening
808 | dear
809 | debatable
810 | debonair
811 | decadent
812 | decayed
813 | decaying
814 | deceitful
815 | deceivable
816 | deceiving
817 | decent
818 | decentralized
819 | deceptive
820 | decimated
821 | decipherable
822 | decisive
823 | declining
824 | decorative
825 | decorous
826 | decreasing
827 | decrepit
828 | dedicated
829 | deep
830 | deepening
831 | deeply
832 | defeated
833 | defective
834 | defendable
835 | defenseless
836 | defensible
837 | defensive
838 | defiant
839 | deficient
840 | definable
841 | definitive
842 | deformed
843 | degenerative
844 | degraded
845 | dehydrated
846 | dejected
847 | delectable
848 | deliberate
849 | deliberative
850 | delicate
851 | delicious
852 | delighted
853 | delightful
854 | delinquent
855 | delirious
856 | deliverable
857 | deluded
858 | demanding
859 | demented
860 | democratic
861 | demonic
862 | demonstrative
863 | demure
864 | deniable
865 | dense
866 | dependable
867 | dependent
868 | deplorable
869 | deploring
870 | depraved
871 | depressed
872 | depressing
873 | depressive
874 | deprived
875 | deranged
876 | derivative
877 | derogative
878 | derogatory
879 | descriptive
880 | deserted
881 | desirable
882 | desirous
883 | desolate
884 | despairing
885 | desperate
886 | despicable
887 | despised
888 | despondent
889 | destroyed
890 | destructive
891 | detachable
892 | detached
893 | detailed
894 | detectable
895 | determined
896 | detestable
897 | detrimental
898 | devastated
899 | devastating
900 | devilish
901 | devious
902 | devoted
903 | devout
904 | dexterous
905 | diabolical
906 | diagonal
907 | didactic
908 | different
909 | difficult
910 | diffuse
911 | digestive
912 | digital
913 | dignified
914 | digressive
915 | dilapidated
916 | diligent
917 | dim
918 | diminishing
919 | diminutive
920 | dingy
921 | diplomatic
922 | dire
923 | direct
924 | direful
925 | dirty
926 | disabled
927 | disadvantaged
928 | disadvantageous
929 | disaffected
930 | disagreeable
931 | disappearing
932 | disappointed
933 | disappointing
934 | disapproving
935 | disarming
936 | disastrous
937 | discarded
938 | discernable
939 | disciplined
940 | disconnected
941 | discontented
942 | discordant
943 | discouraged
944 | discouraging
945 | discourteous
946 | discredited
947 | discreet
948 | discriminating
949 | discriminatory
950 | discussable
951 | disdainful
952 | diseased
953 | disenchanted
954 | disgraceful
955 | disgruntled
956 | disgusted
957 | disgusting
958 | disheartened
959 | disheartening
960 | dishonest
961 | dishonorable
962 | disillusioned
963 | disinclined
964 | disingenuous
965 | disinterested
966 | disjointed
967 | dislikeable
968 | disliked
969 | disloyal
970 | dismal
971 | dismissive
972 | disobedient
973 | disorderly
974 | disorganized
975 | disparaging
976 | disparate
977 | dispassionate
978 | dispensable
979 | displaced
980 | displeased
981 | displeasing
982 | disposable
983 | disproportionate
984 | disproved
985 | disputable
986 | disputatious
987 | disputed
988 | disreputable
989 | disrespectful
990 | disruptive
991 | dissatisfied
992 | dissimilar
993 | dissolvable
994 | dissolving
995 | dissonant
996 | dissuasive
997 | distant
998 | distasteful
999 | distinct
1000 | distinctive
1001 | distinguished
1002 | distracted
1003 | distracting
1004 | distraught
1005 | distressed
1006 | distressing
1007 | distrustful
1008 | disturbed
1009 | disturbing
1010 | divergent
1011 | diverging
1012 | diverse
1013 | diversified
1014 | divided
1015 | divine
1016 | divisive
1017 | dizzy
1018 | dizzying
1019 | doable
1020 | documentary
1021 | dogged
1022 | doggish
1023 | dogmatic
1024 | doleful
1025 | dollish
1026 | domed
1027 | domestic
1028 | dominant
1029 | domineering
1030 | dorsal
1031 | doting
1032 | double
1033 | doubtful
1034 | doubting
1035 | dovish
1036 | dowdy
1037 | down
1038 | downhearted
1039 | downloadable
1040 | downward
1041 | dozing
1042 | drab
1043 | draconian
1044 | drained
1045 | dramatic
1046 | drastic
1047 | dreaded
1048 | dreadful
1049 | dreaming
1050 | dreamy
1051 | dreary
1052 | drenched
1053 | dressy
1054 | dried
1055 | dripping
1056 | drivable
1057 | driven
1058 | droll
1059 | drooping
1060 | droopy
1061 | drowsy
1062 | drunk
1063 | dry
1064 | dual
1065 | dubious
1066 | due
1067 | dulcet
1068 | dull
1069 | duplicitous
1070 | durable
1071 | dusty
1072 | dutiful
1073 | dwarfish
1074 | dwindling
1075 | dynamic
1076 | dysfunctional
1077 | each
1078 | eager
1079 | early
1080 | earnest
1081 | earsplitting
1082 | earthshaking
1083 | earthy
1084 | east
1085 | eastern
1086 | easy
1087 | eatable
1088 | eccentric
1089 | echoing
1090 | ecological
1091 | economic
1092 | economical
1093 | ecstatic
1094 | edgy
1095 | editable
1096 | educated
1097 | educational
1098 | eerie
1099 | effective
1100 | effervescent
1101 | efficacious
1102 | efficient
1103 | effortless
1104 | effusive
1105 | egalitarian
1106 | egocentric
1107 | egomaniacal
1108 | egotistical
1109 | eight
1110 | eighth
1111 | either
1112 | elaborate
1113 | elastic
1114 | elated
1115 | elderly
1116 | electric
1117 | electrical
1118 | electrifying
1119 | electronic
1120 | elegant
1121 | elementary
1122 | elevated
1123 | elfin
1124 | elfish
1125 | eligible
1126 | elite
1127 | eloquent
1128 | elusive
1129 | emaciated
1130 | embarrassed
1131 | embarrassing
1132 | embattled
1133 | embittered
1134 | emblematic
1135 | emboldened
1136 | embroiled
1137 | emergency
1138 | eminent
1139 | emotional
1140 | emotionless
1141 | empirical
1142 | empty
1143 | enamored
1144 | enchanted
1145 | enchanting
1146 | encouraged
1147 | encouraging
1148 | encrusted
1149 | endangered
1150 | endearing
1151 | endemic
1152 | endless
1153 | endurable
1154 | enduring
1155 | energetic
1156 | energizing
1157 | enforceable
1158 | engaging
1159 | engrossing
1160 | enhanced
1161 | enigmatic
1162 | enjoyable
1163 | enlarged
1164 | enlightened
1165 | enormous
1166 | enough
1167 | enraged
1168 | ensuing
1169 | enterprising
1170 | entertained
1171 | entertaining
1172 | enthralled
1173 | enthused
1174 | enthusiastic
1175 | enticing
1176 | entire
1177 | entranced
1178 | entrepreneurial
1179 | enumerable
1180 | enviable
1181 | envious
1182 | environmental
1183 | episodic
1184 | equable
1185 | equal
1186 | equidistant
1187 | equitable
1188 | equivalent
1189 | erasable
1190 | erect
1191 | eroding
1192 | errant
1193 | erratic
1194 | erroneous
1195 | eruptive
1196 | escalating
1197 | esoteric
1198 | essential
1199 | established
1200 | estimated
1201 | estranged
1202 | eternal
1203 | ethereal
1204 | ethical
1205 | ethnic
1206 | euphemistic
1207 | euphoric
1208 | evanescent
1209 | evasive
1210 | even
1211 | evenhanded
1212 | eventful
1213 | eventual
1214 | everlasting
1215 | every
1216 | evil
1217 | evocative
1218 | exacerbating
1219 | exact
1220 | exacting
1221 | exaggerated
1222 | exalted
1223 | exasperated
1224 | exasperating
1225 | excellent
1226 | exceptional
1227 | excessive
1228 | exchangeable
1229 | excitable
1230 | excited
1231 | exciting
1232 | exclusive
1233 | excruciating
1234 | excusable
1235 | executable
1236 | exemplary
1237 | exhausted
1238 | exhausting
1239 | exhaustive
1240 | exhilarated
1241 | exhilarating
1242 | existing
1243 | exotic
1244 | expandable
1245 | expanded
1246 | expanding
1247 | expansive
1248 | expectant
1249 | expected
1250 | expedient
1251 | expeditious
1252 | expendable
1253 | expensive
1254 | experimental
1255 | expert
1256 | expired
1257 | expiring
1258 | explainable
1259 | explicit
1260 | exploding
1261 | exploitative
1262 | exploited
1263 | explosive
1264 | exponential
1265 | exposed
1266 | express
1267 | expressionistic
1268 | expressionless
1269 | expressive
1270 | exquisite
1271 | extemporaneous
1272 | extendable
1273 | extended
1274 | extension
1275 | extensive
1276 | exterior
1277 | external
1278 | extra
1279 | extraneous
1280 | extraordinary
1281 | extravagant
1282 | extreme
1283 | exuberant
1284 | exultant
1285 | fabled
1286 | fabulous
1287 | facetious
1288 | facial
1289 | factitious
1290 | factual
1291 | faded
1292 | fading
1293 | failed
1294 | faint
1295 | fainthearted
1296 | fair
1297 | faithful
1298 | faithless
1299 | fallacious
1300 | false
1301 | falsified
1302 | faltering
1303 | familiar
1304 | famished
1305 | famous
1306 | fanatical
1307 | fanciful
1308 | fancy
1309 | fantastic
1310 | far
1311 | faraway
1312 | farcical
1313 | farflung
1314 | farsighted
1315 | fascinated
1316 | fascinating
1317 | fascistic
1318 | fashionable
1319 | fast
1320 | fastest
1321 | fastidious
1322 | fat
1323 | fatal
1324 | fateful
1325 | fatherly
1326 | fathomable
1327 | fathomless
1328 | fatigued
1329 | faulty
1330 | favorable
1331 | fawning
1332 | feared
1333 | fearful
1334 | fearless
1335 | fearsome
1336 | feathered
1337 | feathery
1338 | feckless
1339 | federal
1340 | feeble
1341 | feebleminded
1342 | feeling
1343 | feigned
1344 | felonious
1345 | female
1346 | feminine
1347 | fermented
1348 | ferocious
1349 | fertile
1350 | fervent
1351 | fervid
1352 | festive
1353 | fetching
1354 | fetid
1355 | feudal
1356 | feverish
1357 | few
1358 | few,
1359 | fewer
1360 | fictional
1361 | fictitious
1362 | fidgeting
1363 | fidgety
1364 | fiendish
1365 | fierce
1366 | fiery
1367 | fifth
1368 | filmy
1369 | filtered
1370 | filthy
1371 | final
1372 | financial
1373 | fine
1374 | finicky
1375 | finite
1376 | fireproof
1377 | firm
1378 | first
1379 | fiscal
1380 | fishy
1381 | fit
1382 | fitted
1383 | fitting
1384 | five
1385 | fixable
1386 | fixed
1387 | flabby
1388 | flagrant
1389 | flaky
1390 | flamboyant
1391 | flaming
1392 | flammable
1393 | flashy
1394 | flat
1395 | flattened
1396 | flattered
1397 | flattering
1398 | flavored
1399 | flavorful
1400 | flavorless
1401 | flawed
1402 | flawless
1403 | fleeting
1404 | flexible
1405 | flickering
1406 | flimsy
1407 | flippant
1408 | flirtatious
1409 | floating
1410 | flooded
1411 | floppy
1412 | floral
1413 | flowering
1414 | flowery
1415 | fluent
1416 | fluffy
1417 | flushed
1418 | fluttering
1419 | flying
1420 | foamy
1421 | focused
1422 | foggy
1423 | folded
1424 | following
1425 | fond
1426 | foolhardy
1427 | foolish
1428 | forbidding
1429 | forceful
1430 | foreboding
1431 | foregoing
1432 | foreign
1433 | forensic
1434 | foreseeable
1435 | forged
1436 | forgetful
1437 | forgettable
1438 | forgivable
1439 | forgiving
1440 | forgotten
1441 | forked
1442 | formal
1443 | formative
1444 | former
1445 | formidable
1446 | formless
1447 | formulaic
1448 | forthright
1449 | fortuitous
1450 | fortunate
1451 | forward
1452 | foul
1453 | four
1454 | fourth
1455 | foxy
1456 | fractional
1457 | fractious
1458 | fragile
1459 | fragmented
1460 | fragrant
1461 | frail
1462 | frank
1463 | frantic
1464 | fraternal
1465 | fraudulent
1466 | frayed
1467 | freakish
1468 | freaky
1469 | freckled
1470 | freezing
1471 | frequent
1472 | fresh
1473 | fretful
1474 | fried
1475 | friendly
1476 | frightened
1477 | frightening
1478 | frightful
1479 | frigid
1480 | frilly
1481 | frisky
1482 | frivolous
1483 | front
1484 | frosty
1485 | frothy
1486 | frowning
1487 | frozen
1488 | frugal
1489 | fruitful
1490 | fruitless
1491 | fruity
1492 | frumpy
1493 | frustrated
1494 | frustrating
1495 | fulfilled
1496 | fulfilling
1497 | full
1498 | fumbling
1499 | fuming
1500 | fun
1501 | functional
1502 | fundamental
1503 | funniest
1504 | funny
1505 | furious
1506 | furry
1507 | furthest
1508 | furtive
1509 | fussy
1510 | futile
1511 | future
1512 | futuristic
1513 | fuzzy
1514 | gabby
1515 | gainful
1516 | gallant
1517 | galling
1518 | game
1519 | gamy
1520 | gangly
1521 | gaping
1522 | garbled
1523 | gargantuan
1524 | garish
1525 | garrulous
1526 | gaseous
1527 | gasping
1528 | gaudy
1529 | gaunt
1530 | gauzy
1531 | gawky
1532 | general
1533 | generative
1534 | generic
1535 | generous
1536 | genial
1537 | gentle
1538 | genuine
1539 | geographic
1540 | geologic
1541 | geometric
1542 | geriatric
1543 | ghastly
1544 | ghostly
1545 | ghoulish
1546 | giant
1547 | giddy
1548 | gifted
1549 | gigantic
1550 | giggling
1551 | gilded
1552 | giving
1553 | glad
1554 | glamorous
1555 | glaring
1556 | glassy
1557 | gleaming
1558 | glib
1559 | glistening
1560 | glittering
1561 | globular
1562 | gloomy
1563 | glorious
1564 | glossy
1565 | glowing
1566 | gluey
1567 | glum
1568 | gluttonous
1569 | gnarly
1570 | godly
1571 | gold
1572 | golden
1573 | good
1574 | gooey
1575 | goofy
1576 | gorgeous
1577 | graceful
1578 | gracious
1579 | gradual
1580 | grainy
1581 | grand
1582 | grandiose
1583 | graphic
1584 | grateful
1585 | gratified
1586 | gratifying
1587 | grating
1588 | gratis
1589 | grave
1590 | gray
1591 | greasy
1592 | great
1593 | greatest
1594 | greedy
1595 | green
1596 | gregarious
1597 | grey
1598 | grieving
1599 | grim
1600 | grimacing
1601 | grimy
1602 | grinding
1603 | grinning
1604 | gripping
1605 | gritty
1606 | grizzled
1607 | groaning
1608 | groggy
1609 | groomed
1610 | groovy
1611 | gross
1612 | grotesque
1613 | grouchy
1614 | growling
1615 | grubby
1616 | grueling
1617 | gruesome
1618 | gruff
1619 | grumbling
1620 | grumpy
1621 | guaranteed
1622 | guarded
1623 | guiltless
1624 | guilty
1625 | gullible
1626 | gurgling
1627 | gushing
1628 | gushy
1629 | gusty
1630 | gutsy
1631 | guttural
1632 | habitable
1633 | habitual
1634 | haggard
1635 | hairless
1636 | hairy
1637 | half
1638 | halfhearted
1639 | hallowed
1640 | halting
1641 | handsome
1642 | handsomely
1643 | handy
1644 | hanging
1645 | haphazard
1646 | hapless
1647 | happy
1648 | hard
1649 | hardworking
1650 | hardy
1651 | harebrained
1652 | harmful
1653 | harmless
1654 | harmonic
1655 | harmonious
1656 | harried
1657 | harsh
1658 | hasty
1659 | hated
1660 | hateful
1661 | haughty
1662 | haunting
1663 | hawkish
1664 | hazardous
1665 | hazy
1666 | head
1667 | heady
1668 | healthy
1669 | heartbreaking
1670 | heartbroken
1671 | heartless
1672 | heartrending
1673 | hearty
1674 | heated
1675 | heavenly
1676 | heavy
1677 | hectic
1678 | hefty
1679 | heinous
1680 | hellish
1681 | helpful
1682 | helpless
1683 | her
1684 | heroic
1685 | hesitant
1686 | hideous
1687 | high
1688 | highest
1689 | highfalutin
1690 | highpitched
1691 | hilarious
1692 | his
1693 | hissing
1694 | historical
1695 | hoarse
1696 | hoggish
1697 | holistic
1698 | hollow
1699 | homeless
1700 | homely
1701 | homeopathic
1702 | homey
1703 | homogeneous
1704 | honest
1705 | honking
1706 | honorable
1707 | hopeful
1708 | hopeless
1709 | horizontal
1710 | hormonal
1711 | horned
1712 | horrendous
1713 | horrible
1714 | horrid
1715 | horrific
1716 | horrified
1717 | horrifying
1718 | hospitable
1719 | hostile
1720 | hot
1721 | hot pink
1722 | hotheaded
1723 | howling
1724 | huffy
1725 | huge
1726 | huggable
1727 | hulking
1728 | human
1729 | humanitarian
1730 | humanlike
1731 | humble
1732 | humdrum
1733 | humid
1734 | humiliated
1735 | humiliating
1736 | humming
1737 | humongous
1738 | humorless
1739 | humorous
1740 | hungry
1741 | hurried
1742 | hurt
1743 | hurtful
1744 | hushed
1745 | husky
1746 | hydraulic
1747 | hydrothermal
1748 | hygienic
1749 | hyperbolic
1750 | hypercritical
1751 | hyperirritable
1752 | hypersensitive
1753 | hypertensive
1754 | hypnotic
1755 | hypnotizable
1756 | hypothetical
1757 | hysterical
1758 | icky
1759 | iconoclastic
1760 | icy
1761 | ideal
1762 | idealistic
1763 | identical
1764 | identifiable
1765 | idiosyncratic
1766 | idiotic
1767 | idyllic
1768 | ignorable
1769 | ignorant
1770 | ill
1771 | illegal
1772 | illegible
1773 | illegitimate
1774 | illfated
1775 | illicit
1776 | illinformed
1777 | illiterate
1778 | illogical
1779 | illuminating
1780 | illusive
1781 | illustrious
1782 | imaginable
1783 | imaginary
1784 | imaginative
1785 | imitative
1786 | immaculate
1787 | immanent
1788 | immature
1789 | immeasurable
1790 | immediate
1791 | immense
1792 | immensurable
1793 | imminent
1794 | immobile
1795 | immodest
1796 | immoral
1797 | immortal
1798 | immovable
1799 | impartial
1800 | impassable
1801 | impassioned
1802 | impatient
1803 | impeccable
1804 | impenetrable
1805 | imperative
1806 | imperceptible
1807 | imperceptive
1808 | imperfect
1809 | imperial
1810 | imperialistic
1811 | impermeable
1812 | impersonal
1813 | impertinent
1814 | impervious
1815 | impetuous
1816 | impish
1817 | implausible
1818 | implicit
1819 | implosive
1820 | impolite
1821 | imponderable
1822 | important
1823 | imported
1824 | imposing
1825 | impossible
1826 | impoverished
1827 | impractical
1828 | imprecise
1829 | impressionable
1830 | impressive
1831 | improbable
1832 | improper
1833 | improvable
1834 | improved
1835 | improving
1836 | imprudent
1837 | impulsive
1838 | impure
1839 | inaccessible
1840 | inaccurate
1841 | inactive
1842 | inadequate
1843 | inadmissible
1844 | inadvertent
1845 | inadvisable
1846 | inalienable
1847 | inalterable
1848 | inane
1849 | inanimate
1850 | inapplicable
1851 | inappropriate
1852 | inapt
1853 | inarguable
1854 | inarticulate
1855 | inartistic
1856 | inattentive
1857 | inaudible
1858 | inauspicious
1859 | incalculable
1860 | incandescent
1861 | incapable
1862 | incessant
1863 | incidental
1864 | inclusive
1865 | incoherent
1866 | incomparable
1867 | incompatible
1868 | incompetent
1869 | incomplete
1870 | incomprehensible
1871 | inconceivable
1872 | inconclusive
1873 | incongruent
1874 | incongruous
1875 | inconsequential
1876 | inconsiderable
1877 | inconsiderate
1878 | inconsistent
1879 | inconsolable
1880 | inconspicuous
1881 | incontrovertible
1882 | inconvenient
1883 | incorrect
1884 | incorrigible
1885 | incorruptible
1886 | increasing
1887 | incredible
1888 | incredulous
1889 | incremental
1890 | incurable
1891 | indecent
1892 | indecipherable
1893 | indecisive
1894 | indefensible
1895 | indefinable
1896 | indefinite
1897 | indelible
1898 | independent
1899 | indescribable
1900 | indestructible
1901 | indeterminable
1902 | indeterminate
1903 | indicative
1904 | indifferent
1905 | indigenous
1906 | indignant
1907 | indirect
1908 | indiscreet
1909 | indiscriminate
1910 | indispensable
1911 | indisputable
1912 | indistinct
1913 | individual
1914 | individualistic
1915 | indivisible
1916 | indomitable
1917 | inductive
1918 | indulgent
1919 | industrial
1920 | industrious
1921 | ineffective
1922 | ineffectual
1923 | inefficient
1924 | inelegant
1925 | ineloquent
1926 | inequitable
1927 | inert
1928 | inescapable
1929 | inevitable
1930 | inexact
1931 | inexcusable
1932 | inexhaustible
1933 | inexpedient
1934 | inexpensive
1935 | inexplicable
1936 | inexpressible
1937 | inexpressive
1938 | inextricable
1939 | infallible
1940 | infamous
1941 | infantile
1942 | infatuated
1943 | infected
1944 | infectious
1945 | inferable
1946 | inferior
1947 | infernal
1948 | infinite
1949 | infinitesimal
1950 | inflamed
1951 | inflammable
1952 | inflammatory
1953 | inflatable
1954 | inflated
1955 | inflexible
1956 | influential
1957 | informal
1958 | informative
1959 | informed
1960 | infrequent
1961 | infuriated
1962 | infuriating
1963 | ingenious
1964 | ingenuous
1965 | inglorious
1966 | ingratiating
1967 | inhabitable
1968 | inharmonious
1969 | inherent
1970 | inhibited
1971 | inhospitable
1972 | inhuman
1973 | inhumane
1974 | initial
1975 | injudicious
1976 | injured
1977 | injurious
1978 | innate
1979 | inner
1980 | innocent
1981 | innocuous
1982 | innovative
1983 | innumerable
1984 | inoffensive
1985 | inoperable
1986 | inoperative
1987 | inopportune
1988 | inordinate
1989 | inorganic
1990 | inquiring
1991 | inquisitive
1992 | insane
1993 | insatiable
1994 | inscrutable
1995 | insecure
1996 | insensible
1997 | insensitive
1998 | inseparable
1999 | inside
2000 | insidious
2001 | insightful
2002 | insignificant
2003 | insincere
2004 | insipid
2005 | insistent
2006 | insolent
2007 | inspirational
2008 | inspired
2009 | inspiring
2010 | instant
2011 | instantaneous
2012 | instinctive
2013 | instinctual
2014 | institutional
2015 | instructive
2016 | instrumental
2017 | insubordinate
2018 | insufferable
2019 | insufficient
2020 | insulted
2021 | insulting
2022 | insurable
2023 | insurmountable
2024 | intangible
2025 | integral
2026 | intellectual
2027 | intelligent
2028 | intelligible
2029 | intended
2030 | intense
2031 | intensive
2032 | intentional
2033 | interactive
2034 | interchangeable
2035 | interdepartmental
2036 | interdependent
2037 | interested
2038 | interesting
2039 | interior
2040 | intermediate
2041 | intermittent
2042 | internal
2043 | international
2044 | interpersonal
2045 | interracial
2046 | intestinal
2047 | intimate
2048 | intimidating
2049 | intolerable
2050 | intolerant
2051 | intravenous
2052 | intrepid
2053 | intricate
2054 | intrigued
2055 | intriguing
2056 | intrinsic
2057 | introductory
2058 | introspective
2059 | introverted
2060 | intrusive
2061 | intuitive
2062 | invalid
2063 | invaluable
2064 | invasive
2065 | inventive
2066 | invigorating
2067 | invincible
2068 | invisible
2069 | invited
2070 | inviting
2071 | involuntary
2072 | involved
2073 | inward
2074 | irascible
2075 | irate
2076 | iridescent
2077 | irksome
2078 | ironic
2079 | irrational
2080 | irreconcilable
2081 | irrefutable
2082 | irregular
2083 | irrelative
2084 | irrelevant
2085 | irremovable
2086 | irreparable
2087 | irreplaceable
2088 | irrepressible
2089 | irresistible
2090 | irresponsible
2091 | irretrievably
2092 | irreverent
2093 | irreversible
2094 | irrevocable
2095 | irritable
2096 | irritated
2097 | irritating
2098 | isolated
2099 | itchy
2100 | its
2101 | jabbering
2102 | jaded
2103 | jagged
2104 | jarring
2105 | jaundiced
2106 | jazzy
2107 | jealous
2108 | jeering
2109 | jerky
2110 | jiggling
2111 | jittery
2112 | jobless
2113 | jocular
2114 | joint
2115 | jolly
2116 | jovial
2117 | joyful
2118 | joyless
2119 | joyous
2120 | jubilant
2121 | judgmental
2122 | judicious
2123 | juicy
2124 | jumbled
2125 | jumpy
2126 | junior
2127 | just
2128 | justifiable
2129 | juvenile
2130 | kaput
2131 | keen
2132 | key
2133 | kind
2134 | kindhearted
2135 | kindly
2136 | kinesthetic
2137 | kingly
2138 | knavish
2139 | knightly
2140 | knobbed
2141 | knobby
2142 | knotty
2143 | knowable
2144 | knowing
2145 | knowledgeable
2146 | known
2147 | labored
2148 | laborious
2149 | lackadaisical
2150 | lacking
2151 | lacy
2152 | lame
2153 | lamentable
2154 | languid
2155 | languishing
2156 | lanky
2157 | larcenous
2158 | large
2159 | larger
2160 | largest
2161 | lascivious
2162 | last
2163 | lasting
2164 | late
2165 | latent
2166 | later
2167 | lateral
2168 | latest
2169 | latter
2170 | laudable
2171 | laughable
2172 | laughing
2173 | lavish
2174 | lawful
2175 | lawless
2176 | lax
2177 | lazy
2178 | leading
2179 | lean
2180 | learnable
2181 | learned
2182 | leased
2183 | least
2184 | leathery
2185 | lecherous
2186 | leering
2187 | left
2188 | legal
2189 | legendary
2190 | legible
2191 | legislative
2192 | legitimate
2193 | lengthy
2194 | lenient
2195 | less
2196 | lesser
2197 | lethal
2198 | lethargic
2199 | level
2200 | lewd
2201 | liable
2202 | libelous
2203 | liberal
2204 | licensed
2205 | lifeless
2206 | lifelike
2207 | lifelong
2208 | light
2209 | lighthearted
2210 | likable
2211 | like
2212 | likeable
2213 | likely
2214 | limber
2215 | limited
2216 | limitless
2217 | limp
2218 | limping
2219 | linear
2220 | lined
2221 | lingering
2222 | linguistic
2223 | listless
2224 | literal
2225 | literary
2226 | literate
2227 | lithe
2228 | lithographic
2229 | litigious
2230 | little
2231 | livable
2232 | live
2233 | lively
2234 | livid
2235 | living
2236 | loathsome
2237 | local
2238 | locatable
2239 | locked
2240 | lofty
2241 | logarithmic
2242 | logical
2243 | logistic
2244 | lonely
2245 | long
2246 | longer
2247 | longest
2248 | longing
2249 | longterm
2250 | loose
2251 | lopsided
2252 | loquacious
2253 | lordly
2254 | lost
2255 | loud
2256 | lousy
2257 | loutish
2258 | lovable
2259 | loveable
2260 | lovely
2261 | loving
2262 | low
2263 | lower
2264 | lowly
2265 | loyal
2266 | lucent
2267 | lucid
2268 | lucky
2269 | lucrative
2270 | ludicrous
2271 | lukewarm
2272 | lulling
2273 | luminescent
2274 | luminous
2275 | lumpy
2276 | lurid
2277 | luscious
2278 | lush
2279 | lustrous
2280 | luxuriant
2281 | luxurious
2282 | lying
2283 | lyrical
2284 | macabre
2285 | macho
2286 | mad
2287 | maddening
2288 | madly
2289 | magenta
2290 | magic
2291 | magical
2292 | magnanimous
2293 | magnetic
2294 | magnificent
2295 | maiden
2296 | main
2297 | maintainable
2298 | majestic
2299 | major
2300 | makeable
2301 | makeshift
2302 | maladjusted
2303 | male
2304 | malevolent
2305 | malicious
2306 | malignant
2307 | malleable
2308 | mammoth
2309 | manageable
2310 | managerial
2311 | mandatory
2312 | maneuverable
2313 | mangy
2314 | maniacal
2315 | manic
2316 | manicured
2317 | manipulative
2318 | manly
2319 | manual
2320 | many
2321 | many,
2322 | marbled
2323 | marginal
2324 | marked
2325 | marketable
2326 | married
2327 | marvelous
2328 | masked
2329 | massive
2330 | masterful
2331 | matchless
2332 | material
2333 | materialistic
2334 | maternal
2335 | mathematical
2336 | matronly
2337 | matted
2338 | mature
2339 | maximum
2340 | meager
2341 | mean
2342 | meandering
2343 | meaningful
2344 | meaningless
2345 | measly
2346 | measurable
2347 | meaty
2348 | mechanical
2349 | medical
2350 | medicinal
2351 | meditative
2352 | medium
2353 | meek
2354 | melancholy
2355 | mellow
2356 | melodic
2357 | melodious
2358 | melodramatic
2359 | melted
2360 | memorable
2361 | menacing
2362 | menial
2363 | mental
2364 | merciful
2365 | merciless
2366 | mercurial
2367 | mere
2368 | merry
2369 | messy
2370 | metabolic
2371 | metallic
2372 | metaphoric
2373 | meteoric
2374 | meticulous
2375 | microscopic
2376 | microwaveable
2377 | middle
2378 | midweek
2379 | mighty
2380 | mild
2381 | militant
2382 | militaristic
2383 | military
2384 | milky
2385 | mincing
2386 | mindful
2387 | mindless
2388 | mini
2389 | miniature
2390 | minimal
2391 | minimum
2392 | minor
2393 | minute
2394 | miraculous
2395 | mirthful
2396 | miscellaneous
2397 | mischievous
2398 | miscreant
2399 | miserable
2400 | miserly
2401 | misguided
2402 | misleading
2403 | mistaken
2404 | mistrustful
2405 | mistrusting
2406 | misty
2407 | mixed
2408 | mnemonic
2409 | moaning
2410 | mocking
2411 | moderate
2412 | modern
2413 | modest
2414 | modified
2415 | modular
2416 | moist
2417 | moldy
2418 | momentary
2419 | momentous
2420 | monetary
2421 | monopolistic
2422 | monosyllabic
2423 | monotone
2424 | monotonous
2425 | monstrous
2426 | monumental
2427 | moody
2428 | moral
2429 | moralistic
2430 | morbid
2431 | mordant
2432 | more
2433 | moronic
2434 | morose
2435 | mortal
2436 | mortified
2437 | most
2438 | motherly
2439 | motionless
2440 | motivated
2441 | motivating
2442 | motivational
2443 | mountainous
2444 | mournful
2445 | mouthwatering
2446 | movable
2447 | moved
2448 | moving
2449 | much
2450 | muddled
2451 | muddy
2452 | muffled
2453 | muggy
2454 | multicultural
2455 | multifaceted
2456 | multipurpose
2457 | multitalented
2458 | mumbled
2459 | mundane
2460 | municipal
2461 | murky
2462 | muscular
2463 | mushy
2464 | musical
2465 | musky
2466 | musty
2467 | mutative
2468 | mute
2469 | muted
2470 | mutinous
2471 | muttering
2472 | mutual
2473 | myopic
2474 | mysterious
2475 | mystic
2476 | mystical
2477 | mystified
2478 | mystifying
2479 | mythical
2480 | naive
2481 | nameless
2482 | nappy
2483 | narcissistic
2484 | narrow
2485 | nasal
2486 | nasty
2487 | national
2488 | native
2489 | natural
2490 | naughty
2491 | nauseating
2492 | nauseous
2493 | nautical
2494 | navigable
2495 | near
2496 | nearby
2497 | nearest
2498 | nearsighted
2499 | neat
2500 | nebulous
2501 | necessary
2502 | needless
2503 | needy
2504 | nefarious
2505 | negative
2506 | neglected
2507 | neglectful
2508 | negligent
2509 | negligible
2510 | negotiable
2511 | neighborly
2512 | neither
2513 | nervous
2514 | neurological
2515 | neurotic
2516 | neutral
2517 | newest
2518 | next
2519 | nice
2520 | nifty
2521 | nightmarish
2522 | nimble
2523 | nine
2524 | ninth
2525 | nippy
2526 | no
2527 | noble
2528 | nocturnal
2529 | noiseless
2530 | noisy
2531 | nominal
2532 | nonabrasive
2533 | nonaggressive
2534 | nonchalant
2535 | noncommittal
2536 | noncompetitive
2537 | nonconsecutive
2538 | nondescript
2539 | nondestructive
2540 | nonexclusive
2541 | nonnegotiable
2542 | nonproductive
2543 | nonrefundable
2544 | nonrenewable
2545 | nonresponsive
2546 | nonrestrictive
2547 | nonreturnable
2548 | nonsensical
2549 | nonspecific
2550 | nonstop
2551 | nontransferable
2552 | nonverbal
2553 | nonviolent
2554 | normal
2555 | north
2556 | northeast
2557 | northerly
2558 | northwest
2559 | nostalgic
2560 | nosy
2561 | notable
2562 | noticeable
2563 | notorious
2564 | novel
2565 | noxious
2566 | null
2567 | numb
2568 | numberless
2569 | numbing
2570 | numerable
2571 | numeric
2572 | numerous
2573 | nutritional
2574 | nutritious
2575 | nutty
2576 | oafish
2577 | obedient
2578 | obeisant
2579 | obese
2580 | objectionable
2581 | objective
2582 | obligatory
2583 | obliging
2584 | oblique
2585 | oblivious
2586 | oblong
2587 | obnoxious
2588 | obscene
2589 | obscure
2590 | obsequious
2591 | observable
2592 | observant
2593 | obsessive
2594 | obsolete
2595 | obstinate
2596 | obstructive
2597 | obtainable
2598 | obtrusive
2599 | obtuse
2600 | obvious
2601 | occasional
2602 | occupational
2603 | occupied
2604 | oceanic
2605 | odd
2606 | odiferous
2607 | odious
2608 | odorless
2609 | odorous
2610 | offbeat
2611 | offensive
2612 | offhanded
2613 | official
2614 | officious
2615 | oily
2616 | okay
2617 | oldest
2618 | oldfashioned
2619 | ominous
2620 | omniscient
2621 | omnivorous
2622 | one
2623 | onerous
2624 | only
2625 | opaque
2626 | open
2627 | opened
2628 | openhanded
2629 | openhearted
2630 | opening
2631 | operable
2632 | operatic
2633 | operational
2634 | operative
2635 | opinionated
2636 | opportune
2637 | opportunistic
2638 | opposable
2639 | opposed
2640 | opposing
2641 | opposite
2642 | oppressive
2643 | optimal
2644 | optimistic
2645 | optional
2646 | opulent
2647 | oral
2648 | orange
2649 | ordinary
2650 | organic
2651 | organizational
2652 | original
2653 | ornamental
2654 | ornate
2655 | ornery
2656 | orphaned
2657 | orthopedic
2658 | ossified
2659 | ostentatious
2660 | other
2661 | otherwise
2662 | our
2663 | outer
2664 | outermost
2665 | outgoing
2666 | outlandish
2667 | outraged
2668 | outrageous
2669 | outside
2670 | outspoken
2671 | outstanding
2672 | outward
2673 | oval
2674 | overactive
2675 | overaggressive
2676 | overall
2677 | overambitious
2678 | overassertive
2679 | overbearing
2680 | overcast
2681 | overcautious
2682 | overconfident
2683 | overcritical
2684 | overcrowded
2685 | overemotional
2686 | overenthusiastic
2687 | overjoyed
2688 | overoptimistic
2689 | overpowering
2690 | overpriced
2691 | overprotective
2692 | overqualified
2693 | overrated
2694 | oversensitive
2695 | oversized
2696 | overt
2697 | overwhelmed
2698 | overwhelming
2699 | overworked
2700 | overwrought
2701 | overzealous
2702 | own
2703 | oxymoronic
2704 | padded
2705 | painful
2706 | painless
2707 | painstaking
2708 | palatable
2709 | palatial
2710 | pale
2711 | pallid
2712 | palpable
2713 | paltry
2714 | pampered
2715 | panicky
2716 | panoramic
2717 | paradoxical
2718 | parallel
2719 | paranormal
2720 | parasitic
2721 | parched
2722 | pardonable
2723 | parental
2724 | parenthetic
2725 | parsimonious
2726 | partial
2727 | particular
2728 | partisan
2729 | passing
2730 | passionate
2731 | passive
2732 | past
2733 | pastoral
2734 | patched
2735 | patchy
2736 | patented
2737 | paternal
2738 | paternalistic
2739 | pathetic
2740 | pathological
2741 | patient
2742 | patriotic
2743 | patronizing
2744 | patterned
2745 | payable
2746 | peaceable
2747 | peaceful
2748 | peculiar
2749 | pedantic
2750 | pedestrian
2751 | peerless
2752 | peeved
2753 | peevish
2754 | penetrable
2755 | penetrating
2756 | penitent
2757 | pensive
2758 | peppery
2759 | perceivable
2760 | perceptible
2761 | perceptive
2762 | perceptual
2763 | peremptory
2764 | perennial
2765 | perfect
2766 | perfumed
2767 | perilous
2768 | period
2769 | periodic
2770 | peripheral
2771 | perishable
2772 | perky
2773 | permanent
2774 | permeable
2775 | permissible
2776 | permissive
2777 | pernicious
2778 | perpendicular
2779 | perpetual
2780 | perplexed
2781 | perplexing
2782 | persevering
2783 | persistent
2784 | personable
2785 | personal
2786 | persuasive
2787 | pert
2788 | pertinent
2789 | perturbed
2790 | perturbing
2791 | pervasive
2792 | perverse
2793 | pessimistic
2794 | petite
2795 | pettish
2796 | petty
2797 | petulant
2798 | pharmaceutical
2799 | phenomenal
2800 | philanthropic
2801 | philosophical
2802 | phobic
2803 | phonemic
2804 | phonetic
2805 | phosphorescent
2806 | photographic
2807 | physical
2808 | physiological
2809 | picayune
2810 | picturesque
2811 | piercing
2812 | pigheaded
2813 | pink
2814 | pious
2815 | piquant
2816 | piteous
2817 | pithy
2818 | pitiful
2819 | pitiless
2820 | pivotal
2821 | placid
2822 | plaid
2823 | plain
2824 | plane
2825 | planned
2826 | plant
2827 | plastic
2828 | platonic
2829 | plausible
2830 | playful
2831 | pleading
2832 | pleasant
2833 | pleased
2834 | pleasing
2835 | pleasurable
2836 | plentiful
2837 | pliable
2838 | plodding
2839 | plopping
2840 | plucky
2841 | plump
2842 | pluralistic
2843 | plus
2844 | plush
2845 | pneumatic
2846 | poetic
2847 | poignant
2848 | pointless
2849 | poised
2850 | poisonous
2851 | polished
2852 | polite
2853 | political
2854 | polluted
2855 | polyunsaturated
2856 | pompous
2857 | ponderous
2858 | poor
2859 | poorer
2860 | poorest
2861 | popping
2862 | populous
2863 | porous
2864 | portable
2865 | portly
2866 | positive
2867 | possessive
2868 | possible
2869 | post hoc
2870 | posthumous
2871 | postoperative
2872 | potable
2873 | potent
2874 | potential
2875 | powdery
2876 | powerful
2877 | powerless
2878 | practical
2879 | pragmatic
2880 | praiseworthy
2881 | precarious
2882 | precious
2883 | precipitous
2884 | precise
2885 | precocious
2886 | preconceived
2887 | predicative
2888 | predictable
2889 | predisposed
2890 | predominant
2891 | preeminent
2892 | preemptive
2893 | prefabricated
2894 | preferable
2895 | preferential
2896 | pregnant
2897 | prehistoric
2898 | prejudiced
2899 | prejudicial
2900 | preliminary
2901 | premature
2902 | premeditated
2903 | premium
2904 | prenatal
2905 | preoccupied
2906 | preoperative
2907 | preparative
2908 | prepared
2909 | preposterous
2910 | prescriptive
2911 | present
2912 | presentable
2913 | presidential
2914 | pressing
2915 | pressurized
2916 | prestigious
2917 | presumable
2918 | presumptive
2919 | presumptuous
2920 | pretend
2921 | pretentious
2922 | pretty
2923 | prevalent
2924 | preventable
2925 | preventative
2926 | preventive
2927 | previous
2928 | priceless
2929 | pricey
2930 | prickly
2931 | prim
2932 | primary
2933 | primitive
2934 | primordial
2935 | princely
2936 | principal
2937 | principled
2938 | prior
2939 | prissy
2940 | pristine
2941 | private
2942 | prized
2943 | proactive
2944 | probabilistic
2945 | probable
2946 | problematic
2947 | procedural
2948 | prodigious
2949 | productive
2950 | profane
2951 | professed
2952 | professional
2953 | professorial
2954 | proficient
2955 | profitable
2956 | profound
2957 | profuse
2958 | programmable
2959 | progressive
2960 | prohibitive
2961 | prolific
2962 | prominent
2963 | promised
2964 | promising
2965 | prompt
2966 | pronounceable
2967 | pronounced
2968 | proof
2969 | proper
2970 | prophetic
2971 | proportional
2972 | proportionate
2973 | proportioned
2974 | prospective
2975 | prosperous
2976 | protective
2977 | prototypical
2978 | proud
2979 | proverbial
2980 | provisional
2981 | provocative
2982 | provoking
2983 | proximal
2984 | proximate
2985 | prudent
2986 | prudential
2987 | prying
2988 | psychedelic
2989 | psychiatric
2990 | psychological
2991 | psychosomatic
2992 | psychotic
2993 | puckish
2994 | puffy
2995 | pugnacious
2996 | pumped
2997 | punctual
2998 | pungent
2999 | punishable
3000 | punitive
3001 | puny
3002 | pure
3003 | purified
3004 | puritanical
3005 | purple
3006 | purported
3007 | purposeful
3008 | purposeless
3009 | purring
3010 | pushy
3011 | pusillanimous
3012 | putrid
3013 | puzzled
3014 | puzzling
3015 | pyrotechnic
3016 | quack
3017 | quackish
3018 | quacky
3019 | quaint
3020 | qualified
3021 | qualitative
3022 | quality
3023 | quantifiable
3024 | quantitative
3025 | quarrelsome
3026 | queasy
3027 | queenly
3028 | querulous
3029 | questionable
3030 | quick
3031 | quickest
3032 | quiet
3033 | quintessential
3034 | quirky
3035 | quivering
3036 | quixotic
3037 | quizzical
3038 | quotable
3039 | rabid
3040 | racial
3041 | racist
3042 | radiant
3043 | radical
3044 | radioactive
3045 | ragged
3046 | raging
3047 | rainbow colored
3048 | rainy
3049 | rakish
3050 | rambling
3051 | rambunctious
3052 | rampageous
3053 | rampant
3054 | rancid
3055 | rancorous
3056 | rank
3057 | rapid
3058 | rapturous
3059 | rare
3060 | rascally
3061 | rash
3062 | rasping
3063 | raspy
3064 | rational
3065 | ratty
3066 | ravenous
3067 | raving
3068 | ravishing
3069 | raw
3070 | reactive
3071 | ready
3072 | real
3073 | realistic
3074 | reasonable
3075 | reassured
3076 | reassuring
3077 | rebel
3078 | rebellious
3079 | receding
3080 | recent
3081 | receptive
3082 | recessive
3083 | rechargeable
3084 | reciprocal
3085 | reckless
3086 | reclusive
3087 | recognizable
3088 | recognized
3089 | recondite
3090 | rectangular
3091 | rectifiable
3092 | recurrent
3093 | recyclable
3094 | red
3095 | reddish
3096 | redeemable
3097 | redolent
3098 | redundant
3099 | referential
3100 | refillable
3101 | reflective
3102 | refractive
3103 | refreshing
3104 | refundable
3105 | refurbished
3106 | refutable
3107 | regal
3108 | regional
3109 | regretful
3110 | regrettable
3111 | regular
3112 | reigning
3113 | relatable
3114 | relative
3115 | relaxed
3116 | relaxing
3117 | relentless
3118 | relevant
3119 | reliable
3120 | relieved
3121 | religious
3122 | reluctant
3123 | remaining
3124 | remarkable
3125 | remedial
3126 | reminiscent
3127 | remorseful
3128 | remorseless
3129 | remote
3130 | removable
3131 | renegotiable
3132 | renewable
3133 | rented
3134 | repairable
3135 | repeatable
3136 | repeated
3137 | repentant
3138 | repetitious
3139 | repetitive
3140 | replaceable
3141 | replicable
3142 | reported
3143 | reprehensible
3144 | representative
3145 | repressive
3146 | reproachful
3147 | reproductive
3148 | republican
3149 | repugnant
3150 | repulsive
3151 | reputable
3152 | reputed
3153 | rescued
3154 | resealable
3155 | resentful
3156 | reserved
3157 | resident
3158 | residential
3159 | residual
3160 | resilient
3161 | resolute
3162 | resolvable
3163 | resonant
3164 | resounding
3165 | resourceful
3166 | respectable
3167 | respectful
3168 | respective
3169 | responsible
3170 | responsive
3171 | rested
3172 | restful
3173 | restless
3174 | restored
3175 | restrained
3176 | restrictive
3177 | retired
3178 | retroactive
3179 | retrogressive
3180 | retrospective
3181 | reusable
3182 | revamped
3183 | revealing
3184 | revengeful
3185 | reverent
3186 | reverential
3187 | reverse
3188 | reversible
3189 | reviewable
3190 | reviled
3191 | revisable
3192 | revised
3193 | revocable
3194 | revolting
3195 | revolutionary
3196 | rewarding
3197 | rhetorical
3198 | rhythmic
3199 | rich
3200 | richer
3201 | richest
3202 | ridiculing
3203 | ridiculous
3204 | right
3205 | righteous
3206 | rightful
3207 | rigid
3208 | rigorous
3209 | ringing
3210 | riotous
3211 | ripe
3212 | rippling
3213 | risky
3214 | ritualistic
3215 | ritzy
3216 | riveting
3217 | roaring
3218 | roasted
3219 | robotic
3220 | robust
3221 | rocketing
3222 | roguish
3223 | romantic
3224 | roomy
3225 | rosy
3226 | rotating
3227 | rotten
3228 | rotting
3229 | rotund
3230 | rough
3231 | round
3232 | roundtable
3233 | rousing
3234 | routine
3235 | rowdy
3236 | royal
3237 | ruddy
3238 | rude
3239 | rudimentary
3240 | rueful
3241 | rugged
3242 | ruined
3243 | ruinous
3244 | rumbling
3245 | rumpled
3246 | ruptured
3247 | rural
3248 | rusted
3249 | rustic
3250 | rustling
3251 | rusty
3252 | ruthless
3253 | rutted
3254 | sable
3255 | saccharin
3256 | sacred
3257 | sacrificial
3258 | sacrilegious
3259 | sad
3260 | saddened
3261 | safe
3262 | saintly
3263 | salacious
3264 | salient
3265 | salted
3266 | salty
3267 | salvageable
3268 | salvaged
3269 | same
3270 | sanctimonious
3271 | sandy
3272 | sane
3273 | sanguine
3274 | sanitary
3275 | sappy
3276 | sarcastic
3277 | sardonic
3278 | sassy
3279 | satiny
3280 | satiric
3281 | satirical
3282 | satisfactory
3283 | satisfied
3284 | satisfying
3285 | saucy
3286 | savage
3287 | savory
3288 | savvy
3289 | scalding
3290 | scaly
3291 | scandalous
3292 | scant
3293 | scanty
3294 | scarce
3295 | scared
3296 | scarred
3297 | scary
3298 | scathing
3299 | scattered
3300 | scenic
3301 | scented
3302 | scheduled
3303 | schematic
3304 | scholarly
3305 | scholastic
3306 | scientific
3307 | scintillating
3308 | scorching
3309 | scornful
3310 | scrabbled
3311 | scraggly
3312 | scrappy
3313 | scratched
3314 | scratchy
3315 | scrawny
3316 | screaming
3317 | screeching
3318 | scribbled
3319 | scriptural
3320 | scruffy
3321 | scrumptious
3322 | scrupulous
3323 | sculpted
3324 | sculptural
3325 | scummy
3326 | sealed
3327 | seamless
3328 | searching
3329 | searing
3330 | seasick
3331 | seasonable
3332 | seasonal
3333 | secluded
3334 | second
3335 | secondary
3336 | secondhand
3337 | secret
3338 | secretive
3339 | secular
3340 | sedate
3341 | seditious
3342 | seductive
3343 | seedy
3344 | seeming
3345 | seemly
3346 | seething
3347 | seismic
3348 | select
3349 | selected
3350 | selective
3351 | selfish
3352 | selfless
3353 | sellable
3354 | semiconscious
3355 | semiofficial
3356 | semiprecious
3357 | semiprofessional
3358 | senior
3359 | sensational
3360 | senseless
3361 | sensible
3362 | sensitive
3363 | sensual
3364 | sensuous
3365 | sentimental
3366 | separate
3367 | sequential
3368 | serendipitous
3369 | serene
3370 | serial
3371 | serious
3372 | serrated
3373 | serviceable
3374 | seven
3375 | seventh
3376 | several
3377 | severe
3378 | shabbiest
3379 | shabby
3380 | shaded
3381 | shadowed
3382 | shadowy
3383 | shady
3384 | shaggy
3385 | shaky
3386 | shallow
3387 | shamefaced
3388 | shameful
3389 | shameless
3390 | shapeless
3391 | shapely
3392 | sharp
3393 | sharpened
3394 | shattered
3395 | shattering
3396 | sheepish
3397 | sheer
3398 | sheltered
3399 | shifty
3400 | shimmering
3401 | shining
3402 | shiny
3403 | shivering
3404 | shivery
3405 | shocked
3406 | shocking
3407 | shoddy
3408 | short
3409 | shortsighted
3410 | showy
3411 | shrewd
3412 | shrieking
3413 | shrill
3414 | shut
3415 | shy
3416 | sick
3417 | sickened
3418 | sickening
3419 | sickly
3420 | signed
3421 | significant
3422 | silent
3423 | silky
3424 | silly
3425 | silver
3426 | simian
3427 | similar
3428 | simple
3429 | simpleminded
3430 | simplified
3431 | simplistic
3432 | simultaneous
3433 | sincere
3434 | sinful
3435 | single
3436 | singular
3437 | sinister
3438 | sinuous
3439 | sisterly
3440 | six
3441 | sixth
3442 | sizable
3443 | sizzling
3444 | skeptical
3445 | sketchy
3446 | skilled
3447 | skillful
3448 | skimpy
3449 | skinny
3450 | skittish
3451 | slanderous
3452 | slanted
3453 | slanting
3454 | sleek
3455 | sleeping
3456 | sleepless
3457 | sleepy
3458 | slender
3459 | slick
3460 | slight
3461 | slim
3462 | slimy
3463 | slippery
3464 | sloped
3465 | sloping
3466 | sloppy
3467 | slothful
3468 | slow
3469 | sluggish
3470 | slushy
3471 | sly
3472 | small
3473 | smaller
3474 | smallest
3475 | smarmy
3476 | smart
3477 | smarter
3478 | smartest
3479 | smashing
3480 | smeared
3481 | smelly
3482 | smiling
3483 | smoggy
3484 | smoked
3485 | smoky
3486 | smooth
3487 | smothering
3488 | smudged
3489 | smug
3490 | snapping
3491 | snappish
3492 | snappy
3493 | snarling
3494 | sneaky
3495 | snide
3496 | snippy
3497 | snobbish
3498 | snoopy
3499 | snooty
3500 | snoring
3501 | snotty
3502 | snug
3503 | snuggly
3504 | soaked
3505 | soaking
3506 | soaking wet
3507 | soaring
3508 | sober
3509 | sociable
3510 | social
3511 | socialist
3512 | sociological
3513 | soft
3514 | softhearted
3515 | soggy
3516 | solar
3517 | soldierly
3518 | sole
3519 | solemn
3520 | solicitous
3521 | solid
3522 | solitary
3523 | somatic
3524 | somber
3525 | some,
3526 | sonic
3527 | sonly
3528 | soothed
3529 | soothing
3530 | sophisticated
3531 | sordid
3532 | sore
3533 | sorrowful
3534 | soulful
3535 | soulless
3536 | soundless
3537 | sour
3538 | south
3539 | southeasterly
3540 | southern
3541 | southwestern
3542 | spacious
3543 | spare
3544 | sparing
3545 | sparkling
3546 | sparkly
3547 | sparse
3548 | spasmodic
3549 | spastic
3550 | spatial
3551 | spattered
3552 | special
3553 | specialist
3554 | specialized
3555 | specific
3556 | speckled
3557 | spectacular
3558 | spectral
3559 | speculative
3560 | speechless
3561 | speedy
3562 | spellbinding
3563 | spendthrift
3564 | spherical
3565 | spicy
3566 | spiffy
3567 | spiky
3568 | spinal
3569 | spineless
3570 | spiral
3571 | spiraled
3572 | spirited
3573 | spiritless
3574 | spiritual
3575 | spiteful
3576 | splashing
3577 | splashy
3578 | splattered
3579 | splendid
3580 | splintered
3581 | spoiled
3582 | spoken
3583 | spongy
3584 | spontaneous
3585 | spooky
3586 | sporadic
3587 | sporting
3588 | sportsmanly
3589 | spotless
3590 | spotted
3591 | spotty
3592 | springy
3593 | sprite
3594 | spry
3595 | spurious
3596 | squalid
3597 | squandered
3598 | square
3599 | squashed
3600 | squashy
3601 | squatting
3602 | squawking
3603 | squealing
3604 | squeamish
3605 | squeezable
3606 | squiggly
3607 | squirming
3608 | squirrelly
3609 | stable
3610 | stackable
3611 | stacked
3612 | staggering
3613 | stagnant
3614 | stained
3615 | staking
3616 | stale
3617 | stanch
3618 | standard
3619 | standing
3620 | standoffish
3621 | starched
3622 | stark
3623 | startled
3624 | startling
3625 | starving
3626 | stately
3627 | statistical
3628 | statuesque
3629 | statutory
3630 | staunch
3631 | steadfast
3632 | steady
3633 | stealth
3634 | steaming
3635 | steamy
3636 | steely
3637 | steep
3638 | stereophonic
3639 | stereotyped
3640 | stereotypical
3641 | sterile
3642 | stern
3643 | sticky
3644 | stiff
3645 | stifled
3646 | stifling
3647 | stigmatic
3648 | still
3649 | stilled
3650 | stilted
3651 | stimulating
3652 | stinging
3653 | stingy
3654 | stinking
3655 | stinky
3656 | stirring
3657 | stock
3658 | stodgy
3659 | stoic
3660 | stony
3661 | stormy
3662 | stout
3663 | straggly
3664 | straight
3665 | straightforward
3666 | stranded
3667 | strange
3668 | strategic
3669 | streaked
3670 | strenuous
3671 | stressful
3672 | stretchy
3673 | strict
3674 | strident
3675 | striking
3676 | stringent
3677 | striped
3678 | strong
3679 | stronger
3680 | strongest
3681 | structural
3682 | stubborn
3683 | stubby
3684 | studied
3685 | studious
3686 | stuffed
3687 | stuffy
3688 | stumbling
3689 | stunned
3690 | stunning
3691 | stupendous
3692 | stupid
3693 | sturdy
3694 | stuttering
3695 | stylish
3696 | stylistic
3697 | suave
3698 | subconscious
3699 | subdued
3700 | subject
3701 | subjective
3702 | sublime
3703 | subliminal
3704 | submissive
3705 | subordinate
3706 | subsequent
3707 | subservient
3708 | substantial
3709 | substantiated
3710 | substitute
3711 | subterranean
3712 | subtitled
3713 | subtle
3714 | subversive
3715 | successful
3716 | successive
3717 | succinct
3718 | succulent
3719 | such
3720 | sudden
3721 | suffering
3722 | sufficient
3723 | sugary
3724 | suggestive
3725 | suitable
3726 | sulky
3727 | sullen
3728 | sumptuous
3729 | sunny
3730 | super
3731 | superabundant
3732 | superb
3733 | supercilious
3734 | superficial
3735 | superhuman
3736 | superior
3737 | superlative
3738 | supernatural
3739 | supersensitive
3740 | supersonic
3741 | superstitious
3742 | supple
3743 | supportive
3744 | supposed
3745 | suppressive
3746 | supreme
3747 | sure
3748 | surgical
3749 | surly
3750 | surmountable
3751 | surprised
3752 | surprising
3753 | surrealistic
3754 | survivable
3755 | susceptible
3756 | suspected
3757 | suspicious
3758 | sustainable
3759 | swaggering
3760 | swanky
3761 | swaying
3762 | sweaty
3763 | sweeping
3764 | sweet
3765 | sweltering
3766 | swift
3767 | swimming
3768 | swinish
3769 | swishing
3770 | swollen
3771 | swooping
3772 | syllabic
3773 | syllogistic
3774 | symbiotic
3775 | symbolic
3776 | symmetrical
3777 | sympathetic
3778 | symptomatic
3779 | synergistic
3780 | synonymous
3781 | syntactic
3782 | synthetic
3783 | systematic
3784 | taboo
3785 | tacit
3786 | tacky
3787 | tactful
3788 | tactical
3789 | tactless
3790 | tactual
3791 | tainted
3792 | talented
3793 | talkative
3794 | tall
3795 | taller
3796 | tallest
3797 | tame
3798 | tamed
3799 | tan
3800 | tangential
3801 | tangible
3802 | tangled
3803 | tangy
3804 | tanned
3805 | tantalizing
3806 | tapered
3807 | tardy
3808 | targeted
3809 | tarnished
3810 | tart
3811 | tasteful
3812 | tasteless
3813 | tasty
3814 | tattered
3815 | taunting
3816 | taut
3817 | tawdry
3818 | taxing
3819 | teachable
3820 | tearful
3821 | tearing
3822 | teasing
3823 | technical
3824 | technological
3825 | tectonic
3826 | tedious
3827 | teenage
3828 | teensy
3829 | teeny
3830 | telegraphic
3831 | telekinetic
3832 | telepathic
3833 | telephonic
3834 | telescopic
3835 | telling
3836 | temperamental
3837 | temperate
3838 | tempestuous
3839 | temporary
3840 | tempted
3841 | tempting
3842 | ten
3843 | tenable
3844 | tenacious
3845 | tender
3846 | tenderhearted
3847 | tense
3848 | tentative
3849 | tenth
3850 | tenuous
3851 | tepid
3852 | terminal
3853 | terrestrial
3854 | terrible
3855 | terrific
3856 | terrified
3857 | terrifying
3858 | territorial
3859 | terse
3860 | tested
3861 | testy
3862 | tetchy
3863 | textual
3864 | textural
3865 | thankful
3866 | thankless
3867 | that
3868 | the
3869 | theatrical
3870 | their
3871 | thematic
3872 | theological
3873 | theoretical
3874 | therapeutic
3875 | thermal
3876 | these
3877 | thick
3878 | thievish
3879 | thin
3880 | thinkable
3881 | third
3882 | thirsty
3883 | this
3884 | thorny
3885 | thorough
3886 | those
3887 | thoughtful
3888 | thoughtless
3889 | thrashed
3890 | threatened
3891 | threatening
3892 | three
3893 | thriftless
3894 | thrifty
3895 | thrilled
3896 | thrilling
3897 | throbbing
3898 | thumping
3899 | thundering
3900 | thunderous
3901 | ticking
3902 | tickling
3903 | ticklish
3904 | tidal
3905 | tidy
3906 | tight
3907 | tightfisted
3908 | timeless
3909 | timely
3910 | timid
3911 | timorous
3912 | tiny
3913 | tipsy
3914 | tired
3915 | tireless
3916 | tiresome
3917 | tiring
3918 | tolerable
3919 | tolerant
3920 | tonal
3921 | toneless
3922 | toothsome
3923 | toothy
3924 | top
3925 | topical
3926 | topographical
3927 | tormented
3928 | torpid
3929 | torrential
3930 | torrid
3931 | torturous
3932 | total
3933 | touched
3934 | touching
3935 | touchy
3936 | tough
3937 | towering
3938 | toxic
3939 | traditional
3940 | tragic
3941 | trainable
3942 | trained
3943 | training
3944 | traitorous
3945 | tranquil
3946 | transcendent
3947 | transcendental
3948 | transformational
3949 | transformative
3950 | transformed
3951 | transient
3952 | transitional
3953 | transitory
3954 | translucent
3955 | transparent
3956 | transplanted
3957 | trapped
3958 | trashed
3959 | trashy
3960 | traumatic
3961 | treacherous
3962 | treasonable
3963 | treasonous
3964 | treasured
3965 | treatable
3966 | tremendous
3967 | tremulous
3968 | trenchant
3969 | trendy
3970 | triangular
3971 | tribal
3972 | tricky
3973 | trim
3974 | tripping
3975 | trite
3976 | triumphant
3977 | trivial
3978 | tropical
3979 | troubled
3980 | troublesome
3981 | troubling
3982 | truculent
3983 | true
3984 | trusted
3985 | trustful
3986 | trusting
3987 | trustworthy
3988 | trusty
3989 | truthful
3990 | trying
3991 | tumultuous
3992 | tuneful
3993 | tuneless
3994 | turbulent
3995 | twinkling
3996 | twinkly
3997 | twisted
3998 | twitchy
3999 | two
4000 | typical
4001 | tyrannical
4002 | tyrannous
4003 | ubiquitous
4004 | ugliest
4005 | ugly
4006 | ultimate
4007 | ultra
4008 | ultraconservative
4009 | ultrasensitive
4010 | ultrasonic
4011 | ultraviolet
4012 | unabashed
4013 | unabated
4014 | unable
4015 | unacceptable
4016 | unaccompanied
4017 | unaccountable
4018 | unaccustomed
4019 | unacknowledged
4020 | unadorned
4021 | unadulterated
4022 | unadventurous
4023 | unadvised
4024 | unaffected
4025 | unaffordable
4026 | unafraid
4027 | unaggressive
4028 | unaided
4029 | unalienable
4030 | unalterable
4031 | unaltered
4032 | unambiguous
4033 | unanimous
4034 | unannounced
4035 | unanswerable
4036 | unanticipated
4037 | unapologetic
4038 | unappealing
4039 | unappetizing
4040 | unappreciative
4041 | unapproachable
4042 | unarmed
4043 | unashamed
4044 | unassailable
4045 | unassertive
4046 | unassisted
4047 | unattached
4048 | unattainable
4049 | unattractive
4050 | unauthorized
4051 | unavailable
4052 | unavailing
4053 | unavoidable
4054 | unbalanced
4055 | unbearable
4056 | unbeatable
4057 | unbeaten
4058 | unbecoming
4059 | unbelievable
4060 | unbelieving
4061 | unbendable
4062 | unbending
4063 | unbiased
4064 | unblemished
4065 | unblinking
4066 | unblushing
4067 | unbounded
4068 | unbreakable
4069 | unbridled
4070 | uncanny
4071 | uncaring
4072 | unceasing
4073 | unceremonious
4074 | uncertain
4075 | unchangeable
4076 | unchanging
4077 | uncharacteristic
4078 | uncharitable
4079 | uncharted
4080 | uncivil
4081 | uncivilized
4082 | unclassified
4083 | unclean
4084 | uncluttered
4085 | uncomely
4086 | uncomfortable
4087 | uncommitted
4088 | uncommon
4089 | uncommunicative
4090 | uncomplaining
4091 | uncomprehending
4092 | uncompromising
4093 | unconcerned
4094 | unconditional
4095 | unconfirmed
4096 | unconquerable
4097 | unconscionable
4098 | unconscious
4099 | unconstitutional
4100 | unconstrained
4101 | unconstructive
4102 | uncontainable
4103 | uncontrollable
4104 | unconventional
4105 | unconvinced
4106 | unconvincing
4107 | uncooked
4108 | uncooperative
4109 | uncoordinated
4110 | uncouth
4111 | uncovered
4112 | uncreative
4113 | uncritical
4114 | undamaged
4115 | undated
4116 | undaunted
4117 | undeclared
4118 | undefeated
4119 | undefined
4120 | undemocratic
4121 | undeniable
4122 | undependable
4123 | underdeveloped
4124 | underfunded
4125 | underhanded
4126 | underprivileged
4127 | understandable
4128 | understanding
4129 | understated
4130 | understood
4131 | undeserved
4132 | undesirable
4133 | undetected
4134 | undeterred
4135 | undeveloped
4136 | undeviating
4137 | undifferentiated
4138 | undignified
4139 | undiminished
4140 | undiplomatic
4141 | undisciplined
4142 | undiscovered
4143 | undisguised
4144 | undisputed
4145 | undistinguished
4146 | undivided
4147 | undoubted
4148 | unearthly
4149 | uneasy
4150 | uneducated
4151 | unemotional
4152 | unemployed
4153 | unencumbered
4154 | unending
4155 | unendurable
4156 | unenforceable
4157 | unenthusiastic
4158 | unenviable
4159 | unequal
4160 | unequaled
4161 | unequivocal
4162 | unerring
4163 | uneven
4164 | uneventful
4165 | unexceptional
4166 | unexcited
4167 | unexpected
4168 | unexplainable
4169 | unexplored
4170 | unexpressive
4171 | unfailing
4172 | unfair
4173 | unfaithful
4174 | unfaltering
4175 | unfamiliar
4176 | unfashionable
4177 | unfathomable
4178 | unfavorable
4179 | unfeeling
4180 | unfettered
4181 | unfilled
4182 | unflagging
4183 | unflappable
4184 | unflattering
4185 | unflinching
4186 | unfocused
4187 | unforeseeable
4188 | unforgettable
4189 | unforgivable
4190 | unforgiving
4191 | unfortunate
4192 | unfriendly
4193 | unfulfilled
4194 | ungallant
4195 | ungenerous
4196 | ungentlemanly
4197 | unglamorous
4198 | ungraceful
4199 | ungracious
4200 | ungrateful
4201 | unguarded
4202 | unhandsome
4203 | unhappy
4204 | unharmed
4205 | unhealthy
4206 | unheated
4207 | unheeded
4208 | unhelpful
4209 | unhesitating
4210 | unhurried
4211 | uniform
4212 | unilateral
4213 | unimaginable
4214 | unimaginative
4215 | unimpeachable
4216 | unimpeded
4217 | unimpressive
4218 | unincorporated
4219 | uninformed
4220 | uninhabitable
4221 | uninhibited
4222 | uninitiated
4223 | uninjured
4224 | uninspired
4225 | uninsurable
4226 | unintelligent
4227 | unintelligible
4228 | unintended
4229 | unintentional
4230 | uninterested
4231 | uninterrupted
4232 | uninvited
4233 | unique
4234 | united
4235 | universal
4236 | unjust
4237 | unjustifiable
4238 | unkempt
4239 | unkind
4240 | unknowing
4241 | unknown
4242 | unlawful
4243 | unlicensed
4244 | unlikable
4245 | unlikely
4246 | unlivable
4247 | unloved
4248 | unlucky
4249 | unmanageable
4250 | unmanly
4251 | unmanned
4252 | unmarketable
4253 | unmasked
4254 | unmatched
4255 | unmemorable
4256 | unmentionable
4257 | unmerciful
4258 | unmistakable
4259 | unmitigated
4260 | unmodified
4261 | unmotivated
4262 | unnatural
4263 | unnecessary
4264 | unnerved
4265 | unnerving
4266 | unnoticeable
4267 | unobserved
4268 | unobtainable
4269 | unobtrusive
4270 | unofficial
4271 | unopened
4272 | unopposed
4273 | unorthodox
4274 | unostentatious
4275 | unpalatable
4276 | unpardonable
4277 | unpersuasive
4278 | unperturbed
4279 | unplanned
4280 | unpleasant
4281 | unprecedented
4282 | unpredictable
4283 | unpretentious
4284 | unprincipled
4285 | unproductive
4286 | unprofessional
4287 | unprofitable
4288 | unpromising
4289 | unpronounceable
4290 | unprovoked
4291 | unqualified
4292 | unquantifiable
4293 | unquenchable
4294 | unquestionable
4295 | unquestioned
4296 | unquestioning
4297 | unraveled
4298 | unreachable
4299 | unreadable
4300 | unrealistic
4301 | unrealized
4302 | unreasonable
4303 | unreceptive
4304 | unrecognizable
4305 | unrecognized
4306 | unredeemable
4307 | unregulated
4308 | unrelenting
4309 | unreliable
4310 | unremarkable
4311 | unremitting
4312 | unrepentant
4313 | unrepresentative
4314 | unrepresented
4315 | unreserved
4316 | unrespectable
4317 | unresponsive
4318 | unrestrained
4319 | unripe
4320 | unrivaled
4321 | unromantic
4322 | unruffled
4323 | unruly
4324 | unsafe
4325 | unsalvageable
4326 | unsatisfactory
4327 | unsatisfied
4328 | unscheduled
4329 | unscholarly
4330 | unscientific
4331 | unscrupulous
4332 | unseasonable
4333 | unseemly
4334 | unselfish
4335 | unsettled
4336 | unsettling
4337 | unshakable
4338 | unshapely
4339 | unsightly
4340 | unsigned
4341 | unsinkable
4342 | unskilled
4343 | unsociable
4344 | unsolicited
4345 | unsolvable
4346 | unsolved
4347 | unsophisticated
4348 | unsound
4349 | unsparing
4350 | unspeakable
4351 | unspoiled
4352 | unstable
4353 | unstated
4354 | unsteady
4355 | unstoppable
4356 | unstressed
4357 | unstructured
4358 | unsubstantial
4359 | unsubstantiated
4360 | unsuccessful
4361 | unsuitable
4362 | unsuited
4363 | unsupervised
4364 | unsupported
4365 | unsure
4366 | unsurpassable
4367 | unsurpassed
4368 | unsurprising
4369 | unsuspected
4370 | unsuspecting
4371 | unsustainable
4372 | unsympathetic
4373 | unsystematic
4374 | untainted
4375 | untamable
4376 | untamed
4377 | untapped
4378 | untenable
4379 | untested
4380 | unthinkable
4381 | unthinking
4382 | untidy
4383 | untimely
4384 | untitled
4385 | untouchable
4386 | untraditional
4387 | untrained
4388 | untried
4389 | untroubled
4390 | untrustworthy
4391 | untruthful
4392 | unused
4393 | unusual
4394 | unverified
4395 | unwary
4396 | unwashed
4397 | unwatchable
4398 | unwavering
4399 | unwholesome
4400 | unwieldy
4401 | unwilling
4402 | unwise
4403 | unwitting
4404 | unworkable
4405 | unworldly
4406 | unworthy
4407 | unwritten
4408 | unyielding
4409 | upbeat
4410 | upmost
4411 | upper
4412 | uppity
4413 | upright
4414 | uproarious
4415 | upset
4416 | upsetting
4417 | upstairs
4418 | uptight
4419 | upward
4420 | urbane
4421 | urgent
4422 | usable
4423 | used
4424 | useful
4425 | useless
4426 | usual
4427 | utilitarian
4428 | utopian
4429 | utter
4430 | uttermost
4431 | vacant
4432 | vacillating
4433 | vacuous
4434 | vagabond
4435 | vagrant
4436 | vague
4437 | vain
4438 | valiant
4439 | valid
4440 | valorous
4441 | valuable
4442 | vanishing
4443 | vapid
4444 | vaporous
4445 | variable
4446 | varied
4447 | various
4448 | varying
4449 | vast
4450 | vegetarian
4451 | vegetative
4452 | vehement
4453 | velvety
4454 | venal
4455 | venerable
4456 | vengeful
4457 | venomous
4458 | venturesome
4459 | venturous
4460 | veracious
4461 | verbal
4462 | verbose
4463 | verdant
4464 | verifiable
4465 | verified
4466 | veritable
4467 | vernacular
4468 | versatile
4469 | versed
4470 | vertical
4471 | very
4472 | vexed
4473 | vexing
4474 | viable
4475 | vibrant
4476 | vibrating
4477 | vicarious
4478 | vicious
4479 | victorious
4480 | vigilant
4481 | vigorous
4482 | vile
4483 | villainous
4484 | vindictive
4485 | vinegary
4486 | violent
4487 | violet
4488 | viperous
4489 | viral
4490 | virtual
4491 | virtuous
4492 | virulent
4493 | visceral
4494 | viscous
4495 | visible
4496 | visionary
4497 | visual
4498 | vital
4499 | vitriolic
4500 | vivacious
4501 | vivid
4502 | vocal
4503 | vocational
4504 | voiceless
4505 | volatile
4506 | volcanic
4507 | voluminous
4508 | voluntary
4509 | voluptuous
4510 | voracious
4511 | vulgar
4512 | vulnerable
4513 | wacky
4514 | waggish
4515 | wailing
4516 | waiting
4517 | wakeful
4518 | wandering
4519 | wanting
4520 | wanton
4521 | warlike
4522 | warm
4523 | warmest
4524 | warning
4525 | warring
4526 | wary
4527 | waspish
4528 | waste
4529 | wasted
4530 | wasteful
4531 | watchful
4532 | waterlogged
4533 | waterproof
4534 | watertight
4535 | watery
4536 | wavering
4537 | waxen
4538 | weak
4539 | weakened
4540 | wealthy
4541 | wearisome
4542 | weary
4543 | wee
4544 | weedy
4545 | weekly
4546 | weightless
4547 | weighty
4548 | weird
4549 | welcoming
4550 | well
4551 | wellgroomed
4552 | wellmade
4553 | welloff
4554 | west
4555 | western
4556 | wet
4557 | what
4558 | wheezing
4559 | which
4560 | whimpering
4561 | whimsical
4562 | whining
4563 | whispering
4564 | whistling
4565 | white
4566 | whole
4567 | wholehearted
4568 | wholesale
4569 | wholesome
4570 | whooping
4571 | whopping
4572 | whose
4573 | wicked
4574 | wide
4575 | widespread
4576 | wiggly
4577 | wild
4578 | willful
4579 | willing
4580 | wily
4581 | windy
4582 | winning
4583 | winsome
4584 | winter
4585 | wintery
4586 | wiry
4587 | wise
4588 | wishful
4589 | wispy
4590 | wistful
4591 | withering
4592 | witless
4593 | witty
4594 | wizardly
4595 | wobbly
4596 | woebegone
4597 | woeful
4598 | wolfish
4599 | womanly
4600 | wonderful
4601 | wondrous
4602 | wonted
4603 | wooden
4604 | wooing
4605 | woolen
4606 | woozy
4607 | wordless
4608 | wordy
4609 | work
4610 | workable
4611 | working
4612 | worldly
4613 | worn
4614 | worn down
4615 | worn out
4616 | worried
4617 | worrisome
4618 | worrying
4619 | worse
4620 | worshipful
4621 | worst
4622 | worth
4623 | worthless
4624 | worthwhile
4625 | worthy
4626 | wounding
4627 | wrathful
4628 | wrenching
4629 | wretched
4630 | wriggling
4631 | wriggly
4632 | wrinkled
4633 | wrinkly
4634 | written
4635 | wrong
4636 | wrongful
4637 | wry
4638 | yawning
4639 | yearly
4640 | yearning
4641 | yellow
4642 | yelping
4643 | yielding
4644 | young
4645 | younger
4646 | youngest
4647 | youthful
4648 | yummy
4649 | zany
4650 | zealous
4651 | zestful
4652 | zesty
4653 | zippy
4654 | zonked
4655 | zoological
4656 |
--------------------------------------------------------------------------------
/dict/default/nouns.txt:
--------------------------------------------------------------------------------
1 | ability
2 | able
3 | abroad
4 | accident
5 | achieve
6 | acoustics
7 | act
8 | action
9 | active
10 | activity
11 | actor
12 | addition
13 | adjustment
14 | adult
15 | advance
16 | advantage
17 | advertisement
18 | advice
19 | affair
20 | affect
21 | aftermath
22 | afternoon
23 | afterthought
24 | age
25 | agency
26 | agent
27 | agreement
28 | air
29 | airline
30 | airplane
31 | airport
32 | alarm
33 | alcohol
34 | alley
35 | alternative
36 | ambition
37 | amount
38 | amusement
39 | analysis
40 | analyst
41 | anger
42 | angle
43 | animal
44 | annual
45 | answer
46 | ant
47 | ants
48 | anxiety
49 | anybody
50 | anything
51 | anywhere
52 | apartment
53 | apparatus
54 | apparel
55 | appeal
56 | appearance
57 | apple
58 | apples
59 | appliance
60 | application
61 | appointment
62 | approval
63 | arch
64 | area
65 | argument
66 | arithmetic
67 | arm
68 | army
69 | arrival
70 | art
71 | article
72 | aside
73 | ask
74 | aspect
75 | assignment
76 | assist
77 | assistance
78 | assistant
79 | associate
80 | association
81 | assumption
82 | atmosphere
83 | attack
84 | attempt
85 | attention
86 | attitude
87 | attraction
88 | audience
89 | aunt
90 | author
91 | authority
92 | average
93 | award
94 | awareness
95 | babies
96 | baby
97 | back
98 | background
99 | bad
100 | badge
101 | bag
102 | bait
103 | bake
104 | balance
105 | ball
106 | balloon
107 | balls
108 | banana
109 | band
110 | bank
111 | bar
112 | base
113 | baseball
114 | basin
115 | basis
116 | basket
117 | basketball
118 | bat
119 | bath
120 | bathroom
121 | battle
122 | beach
123 | bead
124 | beam
125 | bean
126 | bear
127 | bears
128 | beast
129 | beat
130 | beautiful
131 | bed
132 | bedroom
133 | beds
134 | bee
135 | beef
136 | beer
137 | beetle
138 | beggar
139 | beginner
140 | beginning
141 | behavior
142 | being
143 | belief
144 | believe
145 | bell
146 | bells
147 | belt
148 | bench
149 | bend
150 | benefit
151 | berry
152 | bet
153 | beyond
154 | bicycle
155 | bid
156 | big
157 | bike
158 | bikes
159 | bill
160 | bird
161 | birds
162 | birth
163 | birthday
164 | bit
165 | bite
166 | bitter
167 | black
168 | blade
169 | blame
170 | blank
171 | blind
172 | block
173 | blood
174 | blow
175 | blue
176 | boat
177 | boats
178 | body
179 | bomb
180 | bone
181 | bonus
182 | book
183 | books
184 | boot
185 | border
186 | boss
187 | bother
188 | bottle
189 | bottom
190 | boundary
191 | bowl
192 | box
193 | boy
194 | boyfriend
195 | boys
196 | brain
197 | brake
198 | branch
199 | brass
200 | brave
201 | bread
202 | break
203 | breakfast
204 | breast
205 | breath
206 | brick
207 | bridge
208 | brief
209 | brilliant
210 | broad
211 | brother
212 | brothers
213 | brown
214 | brush
215 | bubble
216 | bucket
217 | buddy
218 | budget
219 | bug
220 | building
221 | bulb
222 | bun
223 | bunch
224 | burn
225 | burst
226 | bus
227 | bushes
228 | butter
229 | button
230 | buyer
231 | cabbage
232 | cabinet
233 | cable
234 | cactus
235 | cake
236 | cakes
237 | calculator
238 | call
239 | calm
240 | camera
241 | camp
242 | can
243 | cancel
244 | cancer
245 | candidate
246 | candle
247 | candy
248 | cannon
249 | canvas
250 | cap
251 | capital
252 | caption
253 | car
254 | card
255 | care
256 | career
257 | carpenter
258 | carpet
259 | carriage
260 | carry
261 | cars
262 | cart
263 | case
264 | cash
265 | cast
266 | cat
267 | catch
268 | category
269 | cats
270 | cattle
271 | cause
272 | cave
273 | celebration
274 | celery
275 | cell
276 | cellar
277 | cemetery
278 | cent
279 | chain
280 | chair
281 | chairs
282 | chalk
283 | challenge
284 | champion
285 | championship
286 | chance
287 | change
288 | channel
289 | chapter
290 | character
291 | charge
292 | charity
293 | chart
294 | check
295 | cheek
296 | cheese
297 | chemical
298 | chemistry
299 | cherries
300 | cherry
301 | chess
302 | chest
303 | chicken
304 | chickens
305 | childhood
306 | children
307 | chin
308 | chip
309 | chocolate
310 | choice
311 | church
312 | cigarette
313 | circle
314 | city
315 | claim
316 | clam
317 | class
318 | classic
319 | classroom
320 | clerk
321 | click
322 | climate
323 | clock
324 | clocks
325 | closet
326 | cloth
327 | clothes
328 | cloud
329 | clouds
330 | clover
331 | club
332 | clue
333 | coach
334 | coal
335 | coast
336 | coat
337 | cobweb
338 | coffee
339 | coil
340 | cold
341 | collar
342 | collection
343 | college
344 | color
345 | comb
346 | combination
347 | combine
348 | comfort
349 | comfortable
350 | command
351 | comment
352 | commercial
353 | commission
354 | committee
355 | common
356 | communication
357 | comparison
358 | competition
359 | complaint
360 | complex
361 | computer
362 | concentrate
363 | concept
364 | concern
365 | concert
366 | conclusion
367 | condition
368 | conference
369 | confidence
370 | conflict
371 | confusion
372 | connection
373 | consequence
374 | consideration
375 | consist
376 | constant
377 | construction
378 | context
379 | contract
380 | contribution
381 | control
382 | conversation
383 | convert
384 | cook
385 | cookie
386 | copper
387 | copy
388 | cord
389 | cork
390 | corn
391 | corner
392 | cost
393 | cough
394 | count
395 | counter
396 | country
397 | county
398 | couple
399 | courage
400 | course
401 | court
402 | cousin
403 | cover
404 | cow
405 | cows
406 | crack
407 | cracker
408 | craft
409 | crash
410 | crate
411 | crayon
412 | crazy
413 | cream
414 | creative
415 | creator
416 | creature
417 | credit
418 | crew
419 | crib
420 | crime
421 | criticism
422 | crook
423 | cross
424 | crow
425 | crowd
426 | crown
427 | crush
428 | cry
429 | cub
430 | culture
431 | cup
432 | currency
433 | current
434 | curtain
435 | curve
436 | cushion
437 | customer
438 | cut
439 | cycle
440 | dad
441 | damage
442 | dance
443 | dare
444 | dark
445 | date
446 | daughter
447 | day
448 | dead
449 | deal
450 | dealer
451 | dear
452 | death
453 | debate
454 | debt
455 | decision
456 | deep
457 | deer
458 | definition
459 | degree
460 | delay
461 | delivery
462 | demand
463 | department
464 | departure
465 | dependent
466 | deposit
467 | depression
468 | depth
469 | description
470 | designer
471 | desire
472 | desk
473 | destruction
474 | detail
475 | device
476 | devil
477 | diamond
478 | diet
479 | difference
480 | difficulty
481 | dig
482 | digestion
483 | dime
484 | dimension
485 | dinner
486 | dinosaurs
487 | direction
488 | director
489 | dirt
490 | disaster
491 | discipline
492 | discount
493 | discovery
494 | discussion
495 | disease
496 | disgust
497 | dish
498 | disk
499 | display
500 | distance
501 | distribution
502 | district
503 | divide
504 | division
505 | dock
506 | doctor
507 | document
508 | dog
509 | dogs
510 | doll
511 | dolls
512 | donkey
513 | door
514 | dot
515 | double
516 | doubt
517 | downtown
518 | draft
519 | drag
520 | drain
521 | drama
522 | draw
523 | drawer
524 | drawing
525 | dream
526 | dress
527 | drink
528 | drive
529 | driver
530 | driving
531 | drop
532 | drug
533 | drum
534 | drunk
535 | duck
536 | ducks
537 | due
538 | dump
539 | dust
540 | duty
541 | ear
542 | earth
543 | earthquake
544 | ease
545 | east
546 | eat
547 | economics
548 | economy
549 | edge
550 | education
551 | effect
552 | effective
553 | efficiency
554 | effort
555 | egg
556 | eggnog
557 | eggs
558 | elbow
559 | election
560 | elevator
561 | emergency
562 | emotion
563 | emphasis
564 | employ
565 | employee
566 | employer
567 | employment
568 | end
569 | energy
570 | engine
571 | engineer
572 | engineering
573 | entertainment
574 | enthusiasm
575 | entrance
576 | entry
577 | environment
578 | equal
579 | equipment
580 | equivalent
581 | error
582 | escape
583 | essay
584 | establishment
585 | estate
586 | estimate
587 | evening
588 | event
589 | evidence
590 | exam
591 | examination
592 | example
593 | exchange
594 | excitement
595 | excuse
596 | exercise
597 | existence
598 | exit
599 | expansion
600 | experience
601 | expert
602 | explanation
603 | expression
604 | extension
605 | extent
606 | external
607 | extreme
608 | eye
609 | eyes
610 | face
611 | fact
612 | factor
613 | fail
614 | failure
615 | fairies
616 | fall
617 | familiar
618 | family
619 | fan
620 | fang
621 | farm
622 | farmer
623 | fat
624 | father
625 | faucet
626 | fault
627 | fear
628 | feast
629 | feather
630 | feature
631 | fee
632 | feel
633 | feeling
634 | feet
635 | female
636 | few
637 | fiction
638 | field
639 | fifth
640 | fight
641 | figure
642 | fill
643 | film
644 | final
645 | finance
646 | finding
647 | finger
648 | finish
649 | fire
650 | fireman
651 | fish
652 | fishing
653 | fix
654 | flag
655 | flame
656 | flavor
657 | flesh
658 | flight
659 | flock
660 | floor
661 | flow
662 | flower
663 | flowers
664 | fly
665 | focus
666 | fog
667 | fold
668 | following
669 | food
670 | foot
671 | football
672 | force
673 | forever
674 | fork
675 | form
676 | formal
677 | fortune
678 | foundation
679 | fowl
680 | frame
681 | freedom
682 | friction
683 | friend
684 | friends
685 | friendship
686 | frog
687 | frogs
688 | front
689 | fruit
690 | fuel
691 | fun
692 | function
693 | funeral
694 | funny
695 | furniture
696 | future
697 | gain
698 | game
699 | gap
700 | garage
701 | garbage
702 | garden
703 | gas
704 | gate
705 | gather
706 | gear
707 | geese
708 | gene
709 | general
710 | ghost
711 | giants
712 | gift
713 | giraffe
714 | girl
715 | girlfriend
716 | girls
717 | give
718 | glad
719 | glass
720 | glove
721 | glue
722 | go
723 | goal
724 | goat
725 | god
726 | gold
727 | goldfish
728 | golf
729 | good
730 | goodbye
731 | goose
732 | government
733 | governor
734 | grab
735 | grade
736 | grain
737 | grand
738 | grandfather
739 | grandmother
740 | grape
741 | grass
742 | great
743 | green
744 | grip
745 | grocery
746 | ground
747 | growth
748 | guarantee
749 | guard
750 | guess
751 | guidance
752 | guide
753 | guitar
754 | gun
755 | guy
756 | habit
757 | hair
758 | haircut
759 | half
760 | hall
761 | hammer
762 | hand
763 | handle
764 | hands
765 | hang
766 | harbor
767 | harm
768 | harmony
769 | hat
770 | hate
771 | head
772 | health
773 | hearing
774 | heart
775 | heat
776 | heavy
777 | height
778 | hello
779 | hen
780 | hide
781 | high
782 | highlight
783 | highway
784 | hill
785 | hire
786 | historian
787 | history
788 | hit
789 | hobbies
790 | hold
791 | hole
792 | holiday
793 | homework
794 | honey
795 | hook
796 | hope
797 | horn
798 | horror
799 | horse
800 | horses
801 | hose
802 | hospital
803 | hot
804 | hotel
805 | hour
806 | house
807 | houses
808 | housing
809 | human
810 | humor
811 | hunt
812 | hurry
813 | hurt
814 | husband
815 | hydrant
816 | ice
817 | icicle
818 | idea
819 | ideal
820 | if
821 | illegal
822 | imagination
823 | impact
824 | implement
825 | importance
826 | impress
827 | impression
828 | improvement
829 | impulse
830 | incident
831 | income
832 | increase
833 | independence
834 | independent
835 | indication
836 | individual
837 | industry
838 | inevitable
839 | inflation
840 | influence
841 | initial
842 | initiative
843 | injury
844 | ink
845 | insect
846 | inside
847 | inspection
848 | inspector
849 | instance
850 | instruction
851 | instrument
852 | insurance
853 | intention
854 | interaction
855 | interest
856 | internal
857 | international
858 | internet
859 | interview
860 | introduction
861 | invention
862 | investment
863 | iron
864 | island
865 | issue
866 | it
867 | item
868 | jacket
869 | jail
870 | jam
871 | jar
872 | jeans
873 | jelly
874 | jellyfish
875 | jewel
876 | joint
877 | joke
878 | journey
879 | judge
880 | judgment
881 | juice
882 | jump
883 | junior
884 | jury
885 | keep
886 | kettle
887 | key
888 | kick
889 | kid
890 | kill
891 | kind
892 | king
893 | kiss
894 | kitchen
895 | kite
896 | kitten
897 | kittens
898 | kitty
899 | knee
900 | knife
901 | knot
902 | knowledge
903 | laborer
904 | lace
905 | lack
906 | ladder
907 | lady
908 | ladybug
909 | lake
910 | lamp
911 | land
912 | landscape
913 | language
914 | laugh
915 | law
916 | lawyer
917 | lay
918 | layer
919 | lead
920 | leader
921 | leadership
922 | leading
923 | leaf
924 | league
925 | learning
926 | leather
927 | leave
928 | lecture
929 | leg
930 | legs
931 | length
932 | lesson
933 | let
934 | letter
935 | letters
936 | lettuce
937 | level
938 | library
939 | lie
940 | life
941 | lift
942 | light
943 | limit
944 | line
945 | linen
946 | link
947 | lip
948 | liquid
949 | listen
950 | literature
951 | living
952 | lizards
953 | load
954 | loaf
955 | loan
956 | local
957 | location
958 | lock
959 | locket
960 | long
961 | look
962 | loss
963 | love
964 | low
965 | luck
966 | lumber
967 | lunch
968 | lunchroom
969 | machine
970 | magazine
971 | magic
972 | maid
973 | mailbox
974 | main
975 | maintenance
976 | major
977 | make
978 | male
979 | mall
980 | man
981 | management
982 | manner
983 | manufacturer
984 | many
985 | map
986 | marble
987 | march
988 | mark
989 | market
990 | marriage
991 | mask
992 | mass
993 | match
994 | mate
995 | material
996 | math
997 | matter
998 | maximum
999 | maybe
1000 | meal
1001 | meaning
1002 | measure
1003 | measurement
1004 | meat
1005 | medicine
1006 | medium
1007 | meet
1008 | meeting
1009 | member
1010 | membership
1011 | memory
1012 | men
1013 | mention
1014 | menu
1015 | mess
1016 | metal
1017 | method
1018 | mice
1019 | middle
1020 | midnight
1021 | might
1022 | milk
1023 | mind
1024 | mine
1025 | minimum
1026 | minister
1027 | minor
1028 | mint
1029 | minute
1030 | mirror
1031 | miss
1032 | mission
1033 | mist
1034 | mistake
1035 | mitten
1036 | mix
1037 | mixture
1038 | mode
1039 | model
1040 | mom
1041 | moment
1042 | money
1043 | monitor
1044 | monkey
1045 | month
1046 | mood
1047 | moon
1048 | morning
1049 | mortgage
1050 | most
1051 | mother
1052 | motion
1053 | motor
1054 | mountain
1055 | mouse
1056 | mouth
1057 | move
1058 | mud
1059 | muscle
1060 | nail
1061 | nasty
1062 | nation
1063 | national
1064 | native
1065 | natural
1066 | nature
1067 | neat
1068 | necessary
1069 | neck
1070 | need
1071 | needle
1072 | negative
1073 | negotiation
1074 | nerve
1075 | nest
1076 | newspaper
1077 | night
1078 | nobody
1079 | noise
1080 | normal
1081 | north
1082 | nose
1083 | note
1084 | notebook
1085 | nothing
1086 | notice
1087 | novel
1088 | number
1089 | nurse
1090 | nut
1091 | oatmeal
1092 | object
1093 | objective
1094 | obligation
1095 | observation
1096 | occasion
1097 | ocean
1098 | offer
1099 | office
1100 | officer
1101 | official
1102 | oil
1103 | one
1104 | opening
1105 | operation
1106 | opinion
1107 | opportunity
1108 | opposite
1109 | option
1110 | orange
1111 | oranges
1112 | ordinary
1113 | organization
1114 | original
1115 | ornament
1116 | other
1117 | outcome
1118 | outside
1119 | oven
1120 | owl
1121 | owner
1122 | pace
1123 | pack
1124 | package
1125 | pail
1126 | pain
1127 | paint
1128 | painting
1129 | pair
1130 | pan
1131 | pancake
1132 | panic
1133 | paper
1134 | parcel
1135 | parent
1136 | park
1137 | parking
1138 | part
1139 | particular
1140 | party
1141 | pass
1142 | passage
1143 | passenger
1144 | passion
1145 | past
1146 | paste
1147 | patch
1148 | path
1149 | patience
1150 | patient
1151 | pattern
1152 | pause
1153 | pay
1154 | peace
1155 | peak
1156 | pear
1157 | pen
1158 | penalty
1159 | pencil
1160 | pension
1161 | people
1162 | percentage
1163 | perception
1164 | performance
1165 | period
1166 | permission
1167 | permit
1168 | person
1169 | personal
1170 | personality
1171 | perspective
1172 | pest
1173 | pet
1174 | pets
1175 | phase
1176 | philosophy
1177 | phone
1178 | phrase
1179 | physical
1180 | physics
1181 | piano
1182 | pick
1183 | pickle
1184 | picture
1185 | pie
1186 | piece
1187 | pies
1188 | pig
1189 | pigs
1190 | pin
1191 | pipe
1192 | pitch
1193 | pizza
1194 | pizzas
1195 | place
1196 | plan
1197 | plane
1198 | planes
1199 | plant
1200 | plantation
1201 | plants
1202 | plastic
1203 | plate
1204 | platform
1205 | play
1206 | player
1207 | playground
1208 | pleasure
1209 | plenty
1210 | plot
1211 | plough
1212 | pocket
1213 | poem
1214 | poet
1215 | poetry
1216 | point
1217 | poison
1218 | police
1219 | policy
1220 | polish
1221 | politics
1222 | pollution
1223 | pool
1224 | popcorn
1225 | population
1226 | porter
1227 | position
1228 | positive
1229 | possession
1230 | possibility
1231 | possible
1232 | pot
1233 | potato
1234 | potential
1235 | pound
1236 | powder
1237 | power
1238 | practice
1239 | preference
1240 | preparation
1241 | presence
1242 | present
1243 | presentation
1244 | president
1245 | press
1246 | pressure
1247 | price
1248 | pride
1249 | priest
1250 | primary
1251 | principle
1252 | print
1253 | prior
1254 | priority
1255 | prison
1256 | private
1257 | prize
1258 | problem
1259 | procedure
1260 | process
1261 | produce
1262 | product
1263 | profession
1264 | professional
1265 | professor
1266 | profit
1267 | program
1268 | progress
1269 | promise
1270 | promotion
1271 | prompt
1272 | proof
1273 | property
1274 | proposal
1275 | prose
1276 | protection
1277 | protest
1278 | psychology
1279 | pull
1280 | pump
1281 | punch
1282 | punishment
1283 | purchase
1284 | purple
1285 | purpose
1286 | push
1287 | put
1288 | quality
1289 | quantity
1290 | quarter
1291 | quartz
1292 | queen
1293 | question
1294 | quicksand
1295 | quiet
1296 | quill
1297 | quilt
1298 | quince
1299 | quit
1300 | quiver
1301 | quote
1302 | rabbit
1303 | rabbits
1304 | race
1305 | radio
1306 | rail
1307 | railway
1308 | rain
1309 | rainstorm
1310 | raise
1311 | rake
1312 | range
1313 | rat
1314 | rate
1315 | ratio
1316 | raw
1317 | ray
1318 | reach
1319 | reaction
1320 | read
1321 | reading
1322 | reality
1323 | reason
1324 | receipt
1325 | reception
1326 | recess
1327 | recipe
1328 | recognition
1329 | recommendation
1330 | record
1331 | recording
1332 | recover
1333 | red
1334 | reference
1335 | reflection
1336 | refrigerator
1337 | refuse
1338 | region
1339 | regret
1340 | regular
1341 | relation
1342 | relationship
1343 | relative
1344 | release
1345 | relief
1346 | religion
1347 | remote
1348 | remove
1349 | rent
1350 | repair
1351 | repeat
1352 | replacement
1353 | reply
1354 | report
1355 | representative
1356 | republic
1357 | reputation
1358 | request
1359 | requirement
1360 | research
1361 | reserve
1362 | resident
1363 | resist
1364 | resolution
1365 | resolve
1366 | resort
1367 | resource
1368 | respect
1369 | respond
1370 | response
1371 | responsibility
1372 | rest
1373 | restaurant
1374 | result
1375 | return
1376 | reveal
1377 | revenue
1378 | review
1379 | revolution
1380 | reward
1381 | rhythm
1382 | rice
1383 | rich
1384 | riddle
1385 | ride
1386 | rifle
1387 | ring
1388 | rings
1389 | rip
1390 | rise
1391 | risk
1392 | river
1393 | road
1394 | robin
1395 | rock
1396 | rod
1397 | role
1398 | roll
1399 | roof
1400 | room
1401 | rope
1402 | rose
1403 | rough
1404 | round
1405 | route
1406 | routine
1407 | row
1408 | royal
1409 | rub
1410 | ruin
1411 | rule
1412 | run
1413 | rush
1414 | sack
1415 | sad
1416 | safe
1417 | safety
1418 | sail
1419 | salad
1420 | salary
1421 | salt
1422 | sand
1423 | sandwich
1424 | satisfaction
1425 | save
1426 | savings
1427 | scale
1428 | scarecrow
1429 | scarf
1430 | scene
1431 | scent
1432 | schedule
1433 | scheme
1434 | school
1435 | science
1436 | scissors
1437 | score
1438 | scratch
1439 | screen
1440 | screw
1441 | sea
1442 | seashore
1443 | season
1444 | seat
1445 | second
1446 | secret
1447 | secretary
1448 | section
1449 | sector
1450 | seed
1451 | selection
1452 | self
1453 | sell
1454 | senior
1455 | sense
1456 | sensitive
1457 | sentence
1458 | series
1459 | servant
1460 | serve
1461 | session
1462 | set
1463 | shade
1464 | shake
1465 | shame
1466 | shape
1467 | share
1468 | she
1469 | sheep
1470 | sheet
1471 | shelf
1472 | shelter
1473 | shift
1474 | shine
1475 | ship
1476 | shirt
1477 | shock
1478 | shoe
1479 | shoes
1480 | shoot
1481 | shopping
1482 | shot
1483 | shoulder
1484 | show
1485 | shower
1486 | sick
1487 | side
1488 | sidewalk
1489 | sign
1490 | signal
1491 | signature
1492 | significance
1493 | silk
1494 | silly
1495 | silver
1496 | simple
1497 | sing
1498 | singer
1499 | single
1500 | sink
1501 | sir
1502 | sister
1503 | sisters
1504 | situation
1505 | size
1506 | skate
1507 | skill
1508 | skin
1509 | skirt
1510 | sky
1511 | slave
1512 | sleep
1513 | sleet
1514 | slice
1515 | slide
1516 | slip
1517 | slope
1518 | smash
1519 | smell
1520 | smile
1521 | smoke
1522 | snail
1523 | snails
1524 | snake
1525 | snakes
1526 | sneeze
1527 | snow
1528 | soap
1529 | society
1530 | sock
1531 | soda
1532 | sofa
1533 | soft
1534 | software
1535 | soil
1536 | solid
1537 | solution
1538 | somewhere
1539 | son
1540 | song
1541 | songs
1542 | sort
1543 | sound
1544 | soup
1545 | source
1546 | south
1547 | space
1548 | spade
1549 | spare
1550 | spark
1551 | speaker
1552 | special
1553 | specialist
1554 | specific
1555 | speech
1556 | speed
1557 | spell
1558 | spend
1559 | spiders
1560 | spirit
1561 | spiritual
1562 | spite
1563 | split
1564 | sponge
1565 | spoon
1566 | sport
1567 | spot
1568 | spray
1569 | spread
1570 | spring
1571 | spy
1572 | square
1573 | squirrel
1574 | stable
1575 | staff
1576 | stamp
1577 | stand
1578 | standard
1579 | star
1580 | state
1581 | statement
1582 | station
1583 | stay
1584 | steak
1585 | steal
1586 | steam
1587 | steel
1588 | stem
1589 | step
1590 | stew
1591 | stick
1592 | sticks
1593 | still
1594 | stitch
1595 | stock
1596 | stocking
1597 | stomach
1598 | stone
1599 | stop
1600 | storm
1601 | story
1602 | stove
1603 | strain
1604 | stranger
1605 | strategy
1606 | straw
1607 | stream
1608 | street
1609 | strength
1610 | stress
1611 | stretch
1612 | strike
1613 | string
1614 | strip
1615 | stroke
1616 | structure
1617 | struggle
1618 | student
1619 | studio
1620 | study
1621 | stuff
1622 | stupid
1623 | style
1624 | subject
1625 | substance
1626 | success
1627 | suck
1628 | sugar
1629 | suggestion
1630 | suit
1631 | summer
1632 | sun
1633 | supermarket
1634 | surgery
1635 | surprise
1636 | surround
1637 | suspect
1638 | sweater
1639 | sweet
1640 | swim
1641 | swimming
1642 | swing
1643 | switch
1644 | sympathy
1645 | table
1646 | tackle
1647 | tail
1648 | tale
1649 | tank
1650 | tap
1651 | target
1652 | taste
1653 | tax
1654 | tea
1655 | teach
1656 | teacher
1657 | teaching
1658 | team
1659 | tear
1660 | technology
1661 | teeth
1662 | telephone
1663 | television
1664 | tell
1665 | temper
1666 | temperature
1667 | temporary
1668 | tendency
1669 | tennis
1670 | tension
1671 | tent
1672 | term
1673 | territory
1674 | text
1675 | texture
1676 | thanks
1677 | theory
1678 | thing
1679 | things
1680 | thought
1681 | thread
1682 | thrill
1683 | throat
1684 | throne
1685 | thumb
1686 | thunder
1687 | ticket
1688 | tie
1689 | tiger
1690 | till
1691 | time
1692 | tin
1693 | tip
1694 | title
1695 | toad
1696 | today
1697 | toe
1698 | toes
1699 | tomatoes
1700 | tomorrow
1701 | tone
1702 | tongue
1703 | tonight
1704 | tool
1705 | tooth
1706 | toothbrush
1707 | toothpaste
1708 | top
1709 | topic
1710 | total
1711 | touch
1712 | tough
1713 | tour
1714 | tourist
1715 | towel
1716 | tower
1717 | town
1718 | toy
1719 | toys
1720 | track
1721 | trade
1722 | tradition
1723 | traffic
1724 | trail
1725 | train
1726 | trainer
1727 | training
1728 | trains
1729 | tramp
1730 | transition
1731 | transport
1732 | transportation
1733 | trash
1734 | travel
1735 | tray
1736 | treat
1737 | treatment
1738 | tree
1739 | trees
1740 | trick
1741 | trip
1742 | trouble
1743 | trousers
1744 | truck
1745 | trucks
1746 | trust
1747 | truth
1748 | try
1749 | tub
1750 | tune
1751 | turkey
1752 | turn
1753 | twig
1754 | twist
1755 | two
1756 | type
1757 | umbrella
1758 | uncle
1759 | understanding
1760 | underwear
1761 | union
1762 | unique
1763 | unit
1764 | university
1765 | upper
1766 | upstairs
1767 | use
1768 | usual
1769 | vacation
1770 | valuable
1771 | value
1772 | van
1773 | variation
1774 | variety
1775 | vase
1776 | vast
1777 | vegetable
1778 | vehicle
1779 | veil
1780 | vein
1781 | verse
1782 | version
1783 | vessel
1784 | vest
1785 | view
1786 | village
1787 | virus
1788 | visit
1789 | visual
1790 | voice
1791 | volcano
1792 | volleyball
1793 | volume
1794 | voyage
1795 | wait
1796 | wake
1797 | walk
1798 | wall
1799 | war
1800 | warning
1801 | wash
1802 | waste
1803 | watch
1804 | water
1805 | wave
1806 | waves
1807 | wax
1808 | way
1809 | weakness
1810 | wealth
1811 | wear
1812 | weather
1813 | wedding
1814 | week
1815 | weekend
1816 | weight
1817 | weird
1818 | welcome
1819 | west
1820 | western
1821 | wheel
1822 | whereas
1823 | while
1824 | whip
1825 | whistle
1826 | white
1827 | whole
1828 | wife
1829 | wilderness
1830 | will
1831 | wind
1832 | window
1833 | wine
1834 | wing
1835 | winner
1836 | winter
1837 | wire
1838 | wish
1839 | witness
1840 | woman
1841 | women
1842 | wonder
1843 | wood
1844 | wool
1845 | word
1846 | work
1847 | worker
1848 | working
1849 | world
1850 | worm
1851 | worry
1852 | worth
1853 | wound
1854 | wrap
1855 | wren
1856 | wrench
1857 | wrist
1858 | writer
1859 | writing
1860 | yak
1861 | yam
1862 | yard
1863 | yarn
1864 | year
1865 | yellow
1866 | yesterday
1867 | yoke
1868 | young
1869 | youth
1870 | zebra
1871 | zephyr
1872 | zinc
1873 | zipper
1874 | zone
1875 | zoo
1876 |
--------------------------------------------------------------------------------
/dict/default/verbs.txt:
--------------------------------------------------------------------------------
1 | abash
2 | abate
3 | abide
4 | absorb
5 | accelerate
6 | accept
7 | accompany
8 | accomplish
9 | accuse
10 | ache
11 | achieve
12 | acquire
13 | act
14 | acted
15 | activate
16 | adapt
17 | adjust
18 | administer
19 | admire
20 | admit
21 | adopt
22 | advise
23 | afford
24 | agree
25 | alert
26 | alight
27 | allow
28 | altered
29 | amuse
30 | analyze
31 | animate
32 | announce
33 | annoy
34 | answer
35 | anticipate
36 | apologize
37 | appear
38 | applaud
39 | applied
40 | apply
41 | appoint
42 | appraise
43 | appreciate
44 | approach
45 | approve
46 | arbitrate
47 | are
48 | argue
49 | arise
50 | arrange
51 | arrest
52 | arrive
53 | ascertain
54 | ask
55 | assemble
56 | assert
57 | assess
58 | assist
59 | assort
60 | assume
61 | assure
62 | astonish
63 | attach
64 | attack
65 | attain
66 | attempt
67 | attend
68 | attract
69 | audit
70 | audited
71 | avoid
72 | awake
73 | back
74 | bake
75 | balance
76 | ban
77 | bang
78 | banish
79 | bare
80 | bash
81 | bat
82 | bathe
83 | battle
84 | be
85 | beam
86 | bear
87 | beat
88 | beautify
89 | become
90 | befall
91 | beg
92 | begin
93 | behave
94 | behold
95 | believe
96 | belong
97 | bend
98 | bereave
99 | beseech
100 | beset
101 | bet
102 | betray
103 | bid
104 | bind
105 | bite
106 | bleach
107 | bleed
108 | bless
109 | blind
110 | blink
111 | blossom
112 | blot
113 | blow
114 | blur
115 | blush
116 | boast
117 | boil
118 | bolt
119 | bomb
120 | book
121 | bore
122 | borrow
123 | bounce
124 | bow
125 | box
126 | brake
127 | branch
128 | bray
129 | break
130 | breathe
131 | breed
132 | brief
133 | bring
134 | broadcast
135 | bruise
136 | brush
137 | bubble
138 | budget
139 | build
140 | bump
141 | burn
142 | burst
143 | bury
144 | bust
145 | buzz
146 | calculate
147 | call
148 | camp
149 | canvass
150 | capture
151 | care
152 | caress
153 | carry
154 | carve
155 | cash
156 | cast
157 | catalog
158 | catch
159 | cause
160 | cease
161 | celebrate
162 | challenge
163 | change
164 | charge
165 | chart
166 | chase
167 | cheat
168 | check
169 | cheer
170 | chew
171 | chide
172 | chip
173 | choke
174 | choose
175 | chop
176 | claim
177 | clap
178 | clarify
179 | classify
180 | clean
181 | clear
182 | cleave
183 | click
184 | climb
185 | cling
186 | clip
187 | close
188 | clothe
189 | clutch
190 | co
191 | coach
192 | coil
193 | collapse
194 | collect
195 | color
196 | colour
197 | comb
198 | come
199 | command
200 | comment
201 | commit
202 | communicate
203 | compel
204 | compete
205 | compile
206 | complain
207 | complete
208 | compose
209 | compute
210 | conceive
211 | concentrate
212 | conceptualize
213 | concern
214 | conclude
215 | conduct
216 | confess
217 | confine
218 | confirm
219 | confiscate
220 | confront
221 | confuse
222 | congratulate
223 | connote
224 | conquer
225 | consecrate
226 | consent
227 | conserve
228 | consider
229 | consign
230 | consist
231 | console
232 | consolidate
233 | consort
234 | conspire
235 | constitute
236 | constrain
237 | construct
238 | construe
239 | consult
240 | contain
241 | contemn
242 | contend
243 | continue
244 | contract
245 | contradict
246 | contrast
247 | contribute
248 | contrive
249 | control
250 | convene
251 | converge
252 | converse
253 | convert
254 | convey
255 | convict
256 | convince
257 | coo
258 | cook
259 | cool
260 | coordinate
261 | cope
262 | copy
263 | correct
264 | correlate
265 | correspond
266 | corrode
267 | corrupt
268 | cost
269 | cough
270 | counsel
271 | count
272 | course
273 | cover
274 | cower
275 | crack
276 | crackle
277 | crash
278 | crave
279 | crawl
280 | creep
281 | crib
282 | criticize
283 | critique
284 | cross
285 | crowd
286 | crush
287 | cry
288 | curb
289 | cure
290 | curl
291 | curve
292 | cut
293 | cycle
294 | dam
295 | damage
296 | damp
297 | dance
298 | dare
299 | dash
300 | dazzle
301 | deal
302 | decay
303 | deceive
304 | decide
305 | declare
306 | decorate
307 | decrease
308 | dedicate
309 | define
310 | delay
311 | delegate
312 | delight
313 | deliver
314 | demonstrate
315 | deny
316 | depend
317 | deprive
318 | derive
319 | describe
320 | desert
321 | deserve
322 | desire
323 | destroy
324 | detach
325 | detail
326 | detect
327 | determine
328 | devise
329 | diagnose
330 | die
331 | differ
332 | dig
333 | digest
334 | dim
335 | diminish
336 | dine
337 | dip
338 | direct
339 | disagree
340 | disappear
341 | disapprove
342 | disarm
343 | discover
344 | discuss
345 | dislike
346 | disobey
347 | dispense
348 | display
349 | dispose
350 | disprove
351 | dissect
352 | distribute
353 | disturb
354 | disuse
355 | dive
356 | divert
357 | divide
358 | do
359 | does
360 | double
361 | doubt
362 | draft
363 | drag
364 | drain
365 | dramatize
366 | draw
367 | dream
368 | dress
369 | drill
370 | drink
371 | drip
372 | drive
373 | drop
374 | drown
375 | drum
376 | dry
377 | dump
378 | dust
379 | dwell
380 | dye
381 | earn
382 | eat
383 | edited
384 | educate
385 | eliminate
386 | embarrass
387 | emphasize
388 | employ
389 | empower
390 | empty
391 | enable
392 | enacted
393 | encircle
394 | encourage
395 | encouraging
396 | encroach
397 | end
398 | endanger
399 | endorse
400 | endure
401 | enforce
402 | engage
403 | engineer
404 | engrave
405 | enhance
406 | enjoy
407 | enlarge
408 | enlighten
409 | enlist
410 | ensure
411 | enter
412 | entertain
413 | envy
414 | erase
415 | escape
416 | establish
417 | estimate
418 | evaluate
419 | evaporate
420 | examine
421 | exceed
422 | exchange
423 | excite
424 | exclaim
425 | exclude
426 | excuse
427 | execute
428 | exercise
429 | exhibit
430 | exist
431 | expand
432 | expect
433 | expedite
434 | experiment
435 | explain
436 | explode
437 | explore
438 | express
439 | extend
440 | extract
441 | eye
442 | face
443 | facilitate
444 | fade
445 | fail
446 | faint
447 | fall
448 | fan
449 | fancy
450 | fasten
451 | favour
452 | fax
453 | fear
454 | feel
455 | fence
456 | ferry
457 | fetch
458 | fight
459 | fill
460 | film
461 | finalize
462 | finance
463 | find
464 | finish
465 | fire
466 | fish
467 | fit
468 | fix
469 | fizz
470 | flap
471 | flash
472 | flee
473 | fling
474 | float
475 | flood
476 | flop
477 | flow
478 | flower
479 | fly
480 | fold
481 | fool
482 | forbid
483 | force
484 | forecast
485 | forego
486 | foresee
487 | foretell
488 | forget
489 | forgive
490 | forlese
491 | form
492 | formulate
493 | forsake
494 | found
495 | frame
496 | freeze
497 | frighten
498 | fry
499 | fulfil
500 | gag
501 | gain
502 | gainsay
503 | gash
504 | gather
505 | gaze
506 | generate
507 | give
508 | glance
509 | glitter
510 | glow
511 | glue
512 | go
513 | google
514 | govern
515 | grab
516 | grade
517 | graduate
518 | grant
519 | grate
520 | grease
521 | greet
522 | grin
523 | grind
524 | grip
525 | groan
526 | grow
527 | guarantee
528 | guard
529 | guess
530 | guide
531 | hammer
532 | hand
533 | handle
534 | handwrite
535 | hang
536 | happen
537 | harass
538 | harm
539 | has
540 | hatch
541 | hate
542 | haunt
543 | have
544 | head
545 | heal
546 | heap
547 | hear
548 | heat
549 | heave
550 | hesitate
551 | hew
552 | hide
553 | hinder
554 | hiss
555 | hit
556 | hoax
557 | hold
558 | hook
559 | hop
560 | hope
561 | horrify
562 | hover
563 | hug
564 | hum
565 | humiliate
566 | hunt
567 | hurl
568 | hurry
569 | hurt
570 | hush
571 | hustle
572 | hypnotize
573 | hypothesize
574 | idealize
575 | identify
576 | idolize
577 | ignite
578 | ignore
579 | illuminate
580 | illumine
581 | illustrate
582 | imagine
583 | imbibe
584 | imitate
585 | immerse
586 | immolate
587 | immure
588 | impair
589 | impart
590 | impeach
591 | impede
592 | impel
593 | impend
594 | imperil
595 | impinge
596 | implant
597 | implement
598 | implicate
599 | implode
600 | implore
601 | imply
602 | import
603 | impose
604 | impress
605 | imprint
606 | imprison
607 | improve
608 | improvise
609 | inaugurate
610 | incise
611 | include
612 | incorporate
613 | increase
614 | inculcate
615 | indent
616 | indicate
617 | induce
618 | indulge
619 | infect
620 | infest
621 | inflame
622 | inflate
623 | inflect
624 | influence
625 | inform
626 | infringe
627 | infuse
628 | ingest
629 | inhabit
630 | inhale
631 | inherit
632 | initiate
633 | inject
634 | injure
635 | inlay
636 | innovate
637 | input
638 | inquire
639 | inscribe
640 | insert
641 | insist
642 | inspect
643 | inspire
644 | install
645 | institute
646 | instruct
647 | insult
648 | insure
649 | integrate
650 | intend
651 | intensify
652 | interest
653 | interfere
654 | interlay
655 | interpret
656 | interrupt
657 | interview
658 | introduce
659 | invent
660 | inventory
661 | invest
662 | investigate
663 | involve
664 | irritate
665 | is
666 | itch
667 | jail
668 | jam
669 | jog
670 | joke
671 | judge
672 | juggle
673 | jump
674 | justify
675 | keep
676 | kept
677 | kick
678 | kid
679 | kill
680 | kiss
681 | kneel
682 | knit
683 | knock
684 | knot
685 | know
686 | label
687 | lade
688 | land
689 | last
690 | latch
691 | laugh
692 | launch
693 | lay
694 | lead
695 | leak
696 | lean
697 | leap
698 | learn
699 | leave
700 | lecture
701 | led
702 | leer
703 | lend
704 | let
705 | level
706 | license
707 | lick
708 | lie
709 | lift
710 | lifted
711 | light
712 | lighten
713 | like
714 | limp
715 | listen
716 | live
717 | load
718 | locate
719 | lock
720 | long
721 | look
722 | lose
723 | love
724 | magnify
725 | maintain
726 | make
727 | man
728 | manipulate
729 | manufacture
730 | manufacturing
731 | map
732 | march
733 | mark
734 | market
735 | marry
736 | mash
737 | match
738 | mate
739 | matter
740 | mean
741 | measure
742 | meddle
743 | mediate
744 | meet
745 | melt
746 | memorize
747 | mend
748 | mentor
749 | merge
750 | mew
751 | migrate
752 | milk
753 | mind
754 | mine
755 | mislead
756 | miss
757 | misspell
758 | mistake
759 | misunderstand
760 | misuse
761 | mix
762 | moan
763 | model
764 | modify
765 | monitor
766 | moo
767 | moor
768 | motivate
769 | mould
770 | moult
771 | mourn
772 | move
773 | mow
774 | muddle
775 | mug
776 | multiply
777 | murder
778 | murmur
779 | nail
780 | nap
781 | navigate
782 | need
783 | neglect
784 | negotiate
785 | nest
786 | nip
787 | nod
788 | nominate
789 | normalize
790 | note
791 | notice
792 | notify
793 | nourish
794 | number
795 | nurse
796 | obey
797 | object
798 | oblige
799 | observe
800 | obstruct
801 | obtain
802 | occupy
803 | occur
804 | offend
805 | offer
806 | officiate
807 | offset
808 | omit
809 | ooze
810 | open
811 | operate
812 | opine
813 | oppress
814 | opt
815 | optimize
816 | organize
817 | oriented
818 | originate
819 | ought
820 | output
821 | overcome
822 | overdo
823 | overdraw
824 | overflow
825 | overhear
826 | overtake
827 | overthrow
828 | owe
829 | own
830 | pacify
831 | pack
832 | paddle
833 | paint
834 | pardon
835 | park
836 | part
837 | partake
838 | participate
839 | pass
840 | paste
841 | pat
842 | patch
843 | pause
844 | pay
845 | peck
846 | pedal
847 | peel
848 | peep
849 | perceive
850 | perfect
851 | perform
852 | perish
853 | permit
854 | persuade
855 | phone
856 | photograph
857 | pick
858 | pilot
859 | pinch
860 | pine
861 | pinpoint
862 | pioneer
863 | place
864 | plan
865 | plant
866 | play
867 | plead
868 | please
869 | plod
870 | plot
871 | pluck
872 | plug
873 | ply
874 | point
875 | poke
876 | polish
877 | pollute
878 | ponder
879 | possess
880 | pour
881 | pout
882 | practice
883 | practise
884 | praise
885 | praised
886 | pray
887 | preach
888 | precede
889 | predict
890 | prefer
891 | prepare
892 | prescribe
893 | present
894 | preserve
895 | preset
896 | preside
897 | press
898 | pretend
899 | prevent
900 | prick
901 | print
902 | proceed
903 | process
904 | procure
905 | produce
906 | profess
907 | program
908 | progress
909 | prohibit
910 | promise
911 | promote
912 | proofread
913 | propose
914 | prosecute
915 | protect
916 | prove
917 | provide
918 | publicize
919 | pull
920 | pump
921 | punch
922 | puncture
923 | punish
924 | purchase
925 | purify
926 | pursue
927 | push
928 | put
929 | qualify
930 | quarrel
931 | question
932 | queue
933 | quit
934 | race
935 | radiate
936 | rain
937 | raise
938 | rank
939 | rate
940 | rattle
941 | reach
942 | react
943 | read
944 | realign
945 | realize
946 | reason
947 | rebuild
948 | recall
949 | recast
950 | receive
951 | recite
952 | recognize
953 | recollect
954 | recommend
955 | reconcile
956 | record
957 | recruit
958 | recur
959 | redo
960 | reduce
961 | refer
962 | reflect
963 | refuse
964 | regard
965 | regret
966 | regulate
967 | rehabilitate
968 | reign
969 | reinforce
970 | reject
971 | rejoice
972 | relate
973 | relax
974 | release
975 | relieve
976 | rely
977 | remain
978 | remaining
979 | remake
980 | remember
981 | remind
982 | remove
983 | rend
984 | render
985 | renew
986 | renounce
987 | reorganize
988 | repair
989 | repeat
990 | replace
991 | reply
992 | report
993 | represent
994 | reproduce
995 | request
996 | require
997 | rescue
998 | research
999 | resell
1000 | resemble
1001 | reset
1002 | resist
1003 | resolve
1004 | respect
1005 | respond
1006 | rest
1007 | restored
1008 | restrain
1009 | restructure
1010 | retain
1011 | retch
1012 | retire
1013 | retrieve
1014 | return
1015 | reuse
1016 | review
1017 | revise
1018 | rewind
1019 | rhyme
1020 | rid
1021 | ride
1022 | ring
1023 | rinse
1024 | rise
1025 | risk
1026 | roar
1027 | rob
1028 | rock
1029 | roll
1030 | rot
1031 | rub
1032 | ruin
1033 | rule
1034 | run
1035 | rush
1036 | sabotage
1037 | sack
1038 | sacrifice
1039 | sadden
1040 | saddle
1041 | sag
1042 | sail
1043 | sally
1044 | salute
1045 | salvage
1046 | salve
1047 | sanctify
1048 | sanction
1049 | sap
1050 | saponify
1051 | sash
1052 | sashay
1053 | sass
1054 | sate
1055 | satiate
1056 | satirise
1057 | satisfy
1058 | saturate
1059 | saunter
1060 | save
1061 | savor
1062 | savvy
1063 | saw
1064 | say
1065 | scab
1066 | scabble
1067 | scald
1068 | scale
1069 | scam
1070 | scan
1071 | scant
1072 | scar
1073 | scare
1074 | scarify
1075 | scarp
1076 | scat
1077 | scatter
1078 | schedule
1079 | scold
1080 | scorch
1081 | scowl
1082 | scrape
1083 | scratch
1084 | scrawl
1085 | scream
1086 | screw
1087 | scribble
1088 | scrub
1089 | seal
1090 | seat
1091 | see
1092 | seek
1093 | seem
1094 | seize
1095 | select
1096 | sell
1097 | sense
1098 | sentence
1099 | separate
1100 | serve
1101 | set
1102 | settle
1103 | sever
1104 | sew
1105 | shade
1106 | shake
1107 | shall
1108 | shape
1109 | share
1110 | shatter
1111 | shave
1112 | shear
1113 | shed
1114 | shelter
1115 | shine
1116 | shirk
1117 | shit
1118 | shiver
1119 | shock
1120 | shoe
1121 | shoot
1122 | shorten
1123 | shout
1124 | show
1125 | shrink
1126 | shrug
1127 | shun
1128 | shut
1129 | sigh
1130 | sight
1131 | sign
1132 | signal
1133 | signify
1134 | simplify
1135 | sin
1136 | sing
1137 | sink
1138 | sip
1139 | sit
1140 | sketch
1141 | ski
1142 | skid
1143 | skip
1144 | slam
1145 | slap
1146 | slay
1147 | sleep
1148 | slide
1149 | slim
1150 | sling
1151 | slink
1152 | slip
1153 | slit
1154 | slow
1155 | smash
1156 | smell
1157 | smile
1158 | smite
1159 | smoke
1160 | smooth
1161 | smother
1162 | snap
1163 | snatch
1164 | sneak
1165 | sneeze
1166 | sniff
1167 | snore
1168 | snow
1169 | soak
1170 | soar
1171 | sob
1172 | solicit
1173 | solve
1174 | soothe
1175 | soothsay
1176 | sort
1177 | sound
1178 | sow
1179 | spare
1180 | spark
1181 | sparkle
1182 | speak
1183 | specify
1184 | speed
1185 | spell
1186 | spend
1187 | spill
1188 | spin
1189 | spit
1190 | split
1191 | spoil
1192 | spot
1193 | spray
1194 | spread
1195 | spring
1196 | sprout
1197 | squash
1198 | squeak
1199 | squeal
1200 | squeeze
1201 | stain
1202 | stamp
1203 | stand
1204 | stare
1205 | state
1206 | stay
1207 | steal
1208 | steep
1209 | steer
1210 | stem
1211 | step
1212 | sterilize
1213 | stick
1214 | stimulate
1215 | sting
1216 | stink
1217 | stir
1218 | stitch
1219 | stoop
1220 | stop
1221 | strain
1222 | strap
1223 | stray
1224 | streamline
1225 | strengthen
1226 | stress
1227 | stretch
1228 | strew
1229 | stride
1230 | strike
1231 | string
1232 | strip
1233 | strive
1234 | stroke
1235 | structure
1236 | study
1237 | stuff
1238 | sublet
1239 | submit
1240 | subtract
1241 | succeed
1242 | suck
1243 | suffer
1244 | suggest
1245 | suit
1246 | summarize
1247 | summon
1248 | supervise
1249 | supply
1250 | suppose
1251 | surge
1252 | surmise
1253 | surpass
1254 | surprise
1255 | surround
1256 | survive
1257 | suspect
1258 | suspend
1259 | swallow
1260 | sway
1261 | swear
1262 | sweat
1263 | sweep
1264 | swell
1265 | swim
1266 | swing
1267 | switch
1268 | swot
1269 | symbolize
1270 | synthesize
1271 | systemize
1272 | tabulate
1273 | take
1274 | tame
1275 | tap
1276 | target
1277 | taste
1278 | tax
1279 | teach
1280 | tear
1281 | tease
1282 | tee
1283 | telephone
1284 | tell
1285 | tempt
1286 | tend
1287 | terminate
1288 | terrify
1289 | thank
1290 | thaw
1291 | think
1292 | thrive
1293 | throw
1294 | thrust
1295 | thump
1296 | tick
1297 | tickle
1298 | tie
1299 | time
1300 | tip
1301 | tire
1302 | toss
1303 | touch
1304 | tour
1305 | tow
1306 | trace
1307 | trade
1308 | train
1309 | trample
1310 | transcribe
1311 | transfer
1312 | transform
1313 | transport
1314 | trap
1315 | travel
1316 | tread
1317 | treasure
1318 | treat
1319 | tree
1320 | tremble
1321 | trick
1322 | trip
1323 | triumph
1324 | trot
1325 | trouble
1326 | troubleshoot
1327 | trust
1328 | try
1329 | tug
1330 | tumble
1331 | turn
1332 | tutor
1333 | twist
1334 | type
1335 | typeset
1336 | undergo
1337 | understand
1338 | undertake
1339 | undo
1340 | undress
1341 | unfasten
1342 | unify
1343 | unite
1344 | unlock
1345 | unpack
1346 | untidy
1347 | upgrade
1348 | uphold
1349 | uproot
1350 | upset
1351 | urge
1352 | use
1353 | utilize
1354 | utter
1355 | value
1356 | vanish
1357 | vary
1358 | verbalize
1359 | verify
1360 | vex
1361 | vie
1362 | view
1363 | violate
1364 | visit
1365 | vomit
1366 | wail
1367 | wait
1368 | wake
1369 | walk
1370 | wander
1371 | want
1372 | warm
1373 | warn
1374 | wash
1375 | waste
1376 | watch
1377 | water
1378 | wave
1379 | wax
1380 | waylay
1381 | wear
1382 | weave
1383 | wed
1384 | weep
1385 | weigh
1386 | welcome
1387 | wend
1388 | wet
1389 | whine
1390 | whip
1391 | whirl
1392 | whisper
1393 | whistle
1394 | wind
1395 | wink
1396 | wipe
1397 | wish
1398 | withdraw
1399 | withhold
1400 | withstand
1401 | wobble
1402 | wonder
1403 | work
1404 | worry
1405 | worship
1406 | would
1407 | wrap
1408 | wreck
1409 | wrestle
1410 | wriggle
1411 | wring
1412 | write
1413 | xray
1414 | yawn
1415 | yell
1416 | yield
1417 | zinc
1418 | zip
1419 | zoom
1420 |
--------------------------------------------------------------------------------
/dict/reserved.txt:
--------------------------------------------------------------------------------
1 | about
2 | abuse
3 | access
4 | account
5 | accounts
6 | ad
7 | add
8 | address
9 | adm
10 | admanager
11 | admin
12 | admindashboard
13 | administration
14 | administrator
15 | ads
16 | adsense
17 | advertising
18 | adwords
19 | affiliate
20 | affiliates
21 | ajax
22 | alias
23 | analytics
24 | android
25 | anon
26 | anonymous
27 | api
28 | app
29 | apps
30 | archive
31 | asset
32 | assets
33 | assets1
34 | assets2
35 | assets3
36 | auth
37 | authenticate
38 | authentication
39 | auto
40 | avatar
41 | backup
42 | backups
43 | banner
44 | banners
45 | beta
46 | billing
47 | bin
48 | blog
49 | blogs
50 | board
51 | bot
52 | bots
53 | business
54 | buy
55 | cache
56 | calendar
57 | camo
58 | campaign
59 | careers
60 | cdn
61 | cgi
62 | chat
63 | child
64 | cli
65 | client
66 | cliente
67 | clients
68 | cms
69 | code
70 | comercial
71 | community
72 | company
73 | compare
74 | conditions
75 | config
76 | connect
77 | contact
78 | contest
79 | copyright
80 | cp
81 | cpanel
82 | create
83 | css
84 | css1
85 | css2
86 | css3
87 | dashboard
88 | data
89 | database
90 | db
91 | delete
92 | demo
93 | design
94 | dev
95 | develop
96 | developer
97 | developers
98 | development
99 | dir
100 | directory
101 | dns
102 | doc
103 | docs
104 | documentation
105 | domain
106 | donate
107 | download
108 | downloads
109 | ecommerce
110 | edit
111 | editor
112 | email
113 | faq
114 | favorite
115 | features
116 | feed
117 | feedback
118 | feeds
119 | file
120 | files
121 | follow
122 | forum
123 | forums
124 | free
125 | ftp
126 | games
127 | get
128 | gettingstarted
129 | git
130 | global
131 | graph
132 | graphs
133 | group
134 | groups
135 | guest
136 | help
137 | home
138 | homepage
139 | host
140 | hosting
141 | hostname
142 | html
143 | http
144 | httpd
145 | https
146 | id
147 | image
148 | images
149 | imap
150 | img
151 | img1
152 | img2
153 | img3
154 | index
155 | info
156 | information
157 | intranet
158 | investors
159 | invite
160 | invoice
161 | invoices
162 | ios
163 | ipad
164 | iphone
165 | irc
166 | java
167 | javascript
168 | job
169 | jobs
170 | join
171 | js
172 | js1
173 | js2
174 | js3
175 | knowledgebase
176 | lab
177 | list
178 | lists
179 | log
180 | login
181 | logout
182 | logs
183 | m
184 | mail
185 | mail1
186 | mail2
187 | mail3
188 | mailer
189 | mailing
190 | mailto
191 | manage
192 | manager
193 | marketing
194 | master
195 | me
196 | media
197 | message
198 | messenger
199 | mob
200 | mobile
201 | movie
202 | movies
203 | mp3
204 | msg
205 | msn
206 | music
207 | mx
208 | my
209 | mysql
210 | name
211 | named
212 | net
213 | network
214 | networks
215 | new
216 | news
217 | newsite
218 | newsletter
219 | notes
220 | ns
221 | ns1
222 | ns2
223 | ns3
224 | old
225 | online
226 | openings
227 | operator
228 | order
229 | orders
230 | page
231 | pages
232 | panel
233 | partner
234 | partnerpage
235 | partners
236 | password
237 | payment
238 | payments
239 | perl
240 | photo
241 | photos
242 | php
243 | pic
244 | pics
245 | plugin
246 | plugins
247 | pop
248 | pop3
249 | popular
250 | post
251 | postfix
252 | postmaster
253 | posts
254 | privacy
255 | prod
256 | production
257 | profile
258 | project
259 | projects
260 | promo
261 | pub
262 | public
263 | python
264 | random
265 | redirect
266 | register
267 | registration
268 | resolver
269 | root
270 | rss
271 | ruby
272 | sale
273 | sales
274 | sample
275 | samples
276 | sandbox
277 | script
278 | scripts
279 | search
280 | secure
281 | secured
282 | security
283 | send
284 | server
285 | servers
286 | service
287 | setting
288 | settings
289 | setup
290 | shop
291 | signin
292 | signup
293 | site
294 | sitemap
295 | sites
296 | sms
297 | smtp
298 | sorry
299 | sql
300 | ssh
301 | ssl
302 | stage
303 | staging
304 | start
305 | stat
306 | static
307 | stats
308 | status
309 | storage
310 | store
311 | stores
312 | subdomain
313 | subscribe
314 | support
315 | survey
316 | surveys
317 | svn
318 | system
319 | tablet
320 | tablets
321 | talk
322 | task
323 | tasks
324 | tech
325 | telnet
326 | terms
327 | test
328 | test1
329 | test2
330 | test3
331 | teste
332 | testing
333 | tests
334 | theme
335 | themes
336 | tmp
337 | todo
338 | tools
339 | trac
340 | tracking
341 | translate
342 | tv
343 | update
344 | upload
345 | uploads
346 | url
347 | us
348 | usage
349 | user
350 | username
351 | users
352 | validation
353 | validations
354 | video
355 | videos
356 | visitor
357 | web
358 | webdisk
359 | webmail
360 | webmaster
361 | website
362 | websites
363 | whois
364 | wiki
365 | win
366 | workshop
367 | ww
368 | wws
369 | www
370 | www1
371 | www2
372 | www3
373 | wwws
374 | wwww
375 | xpg
376 | you
377 | yourdomain
378 | yourname
379 | yoursite
380 | yourusername
381 |
--------------------------------------------------------------------------------
/dict/rugged/adjectives.txt:
--------------------------------------------------------------------------------
1 | abandoned
2 | active
3 | almighty
4 | audacious
5 | avenged
6 | bad
7 | badass
8 | ballistic
9 | bareback
10 | bearded
11 | beaten
12 | beefcake
13 | big
14 | blackened
15 | blazing
16 | bloodied
17 | bloody
18 | bold
19 | brave
20 | brawny
21 | broken
22 | bulged
23 | bulging
24 | burly
25 | burnt
26 | butch
27 | caged
28 | capable
29 | carnal
30 | chiseled
31 | chivalrous
32 | choppy
33 | coarse
34 | conditioned
35 | confident
36 | courageous
37 | dangerous
38 | daring
39 | dauntless
40 | deep
41 | dense
42 | dignified
43 | downtrodden
44 | dry
45 | durable
46 | elite
47 | energetic
48 | enforced
49 | excessive
50 | exploding
51 | explosive
52 | fallen
53 | fearful
54 | fearless
55 | ferocious
56 | fierce
57 | fiery
58 | firm
59 | flexing
60 | flinty
61 | forced
62 | forcible
63 | forged
64 | furious
65 | gallant
66 | gigantic
67 | glorious
68 | gnarly
69 | golden
70 | grandeur
71 | greasy
72 | grizzled
73 | grizzly
74 | gutsy
75 | hanging
76 | hardened
77 | hardy
78 | harsh
79 | heavy
80 | heroic
81 | highpowered
82 | hostile
83 | howling
84 | huge
85 | hunky
86 | husky
87 | impossible
88 | indomitable
89 | inflexible
90 | inglorious
91 | intense
92 | intrepid
93 | iron
94 | jackboot
95 | jagged
96 | kicking
97 | leathery
98 | legendary
99 | lusty
100 | macho
101 | magnificent
102 | manful
103 | mannish
104 | masculine
105 | max
106 | maximum
107 | mighty
108 | molded
109 | monstrous
110 | muscular
111 | musky
112 | noble
113 | nuclear
114 | patriarchal
115 | plucky
116 | potent
117 | powerful
118 | premium
119 | primal
120 | pummeled
121 | pure
122 | rabid
123 | raging
124 | reinforced
125 | relentless
126 | resolute
127 | righteous
128 | rigid
129 | robust
130 | rocky
131 | rough
132 | roughhewn
133 | rugged
134 | ruthless
135 | sauced
136 | savage
137 | scabrous
138 | seasoned
139 | sharp
140 | sharpened
141 | shaving
142 | smoldering
143 | solid
144 | stable
145 | stalwart
146 | stampeding
147 | stark
148 | staunch
149 | steadfast
150 | steady
151 | steeled
152 | sterling
153 | stiff
154 | stormy
155 | stout
156 | strapping
157 | strong
158 | stubbled
159 | sturdy
160 | suave
161 | substantial
162 | super
163 | supreme
164 | swanson
165 | sweaty
166 | tame
167 | techno
168 | tenacious
169 | tight
170 | tough
171 | transcendent
172 | turbo
173 | tyrannosaurus
174 | ultimate
175 | unbreakable
176 | undaunted
177 | unrelenting
178 | unyielding
179 | valiant
180 | valorous
181 | vehicular
182 | venturous
183 | vicious
184 | vigorous
185 | violent
186 | virile
187 | viscous
188 | weak
189 | weathered
190 | wild
191 | worn
192 | zealous
193 |
--------------------------------------------------------------------------------
/dict/rugged/nouns.txt:
--------------------------------------------------------------------------------
1 | aggression
2 | armageddon
3 | attack
4 | auger
5 | avenger
6 | bacon
7 | badass
8 | ballistic
9 | balls
10 | bar
11 | barbecue
12 | barfight
13 | baron
14 | barrage
15 | barrel
16 | battle
17 | battleaxe
18 | bear
19 | beard
20 | bearskin
21 | beef
22 | beer
23 | bicep
24 | blaster
25 | blood
26 | bomb
27 | bourbon
28 | box
29 | brawn
30 | brimstone
31 | bronco
32 | bruise
33 | buck
34 | bull
35 | bullet
36 | burn
37 | bushwak
38 | buzzsaw
39 | cage
40 | camp
41 | cannon
42 | cannons
43 | caution
44 | chainsaw
45 | challenge
46 | chest
47 | chop
48 | cigar
49 | claw
50 | clip
51 | cobra
52 | coil
53 | competition
54 | corvette
55 | courage
56 | cure
57 | cutlass
58 | czar
59 | damage
60 | danger
61 | darkness
62 | death
63 | deathgrip
64 | deck
65 | delay
66 | demon
67 | den
68 | denim
69 | desert
70 | desire
71 | dinosaur
72 | dog
73 | dogs
74 | dominance
75 | dragon
76 | drain
77 | drill
78 | drone
79 | dropkick
80 | dust
81 | eagle
82 | eagles
83 | earth
84 | echo
85 | emperor
86 | empire
87 | endurance
88 | enemies
89 | enemy
90 | engine
91 | explode
92 | eye
93 | face
94 | falcon
95 | fangs
96 | fear
97 | feast
98 | fence
99 | ferrari
100 | fight
101 | fightmaster
102 | fire
103 | fireball
104 | fish
105 | fist
106 | flag
107 | flames
108 | flint
109 | flood
110 | fool
111 | force
112 | forge
113 | fortress
114 | frame
115 | fume
116 | gate
117 | gates
118 | glory
119 | glue
120 | grease
121 | greatness
122 | grill
123 | guard
124 | guts
125 | hammer
126 | harley
127 | hawk
128 | head
129 | heap
130 | heat
131 | hell
132 | hellfire
133 | hero
134 | heroes
135 | hill
136 | hills
137 | hook
138 | horsepower
139 | hound
140 | hounds
141 | hulk
142 | hurricane
143 | ice
144 | infinity
145 | iron
146 | jail
147 | jaw
148 | jaws
149 | jerky
150 | jet
151 | jetblast
152 | king
153 | knees
154 | knuckles
155 | kraken
156 | land
157 | leather
158 | legend
159 | lightning
160 | lion
161 | lock
162 | love
163 | lumberjack
164 | machete
165 | magnificence
166 | meat
167 | meatslab
168 | mercy
169 | metal
170 | mettle
171 | might
172 | mincemeat
173 | missile
174 | monster
175 | mortal
176 | motor
177 | motorcycle
178 | mount
179 | mountain
180 | mug
181 | muscle
182 | mustache
183 | mustang
184 | nail
185 | nap
186 | night
187 | nunchuck
188 | nunchuk
189 | oak
190 | oil
191 | opponent
192 | overdrive
193 | pack
194 | paint
195 | panther
196 | panzer
197 | passion
198 | peak
199 | peg
200 | phoenix
201 | pine
202 | pistol
203 | piston
204 | plane
205 | power
206 | predator
207 | raptor
208 | revolution
209 | rex
210 | ride
211 | rifle
212 | rock
213 | rodeo
214 | rope
215 | rulership
216 | saber
217 | sauce
218 | saw
219 | scar
220 | scorpion
221 | scotch
222 | seal
223 | sergeant
224 | shade
225 | shark
226 | shelter
227 | shotgun
228 | shrapnel
229 | smoke
230 | spark
231 | spit
232 | spoils
233 | stain
234 | stallion
235 | stampede
236 | stash
237 | steak
238 | stitch
239 | storm
240 | stranglehold
241 | strap
242 | stratosphere
243 | streetfight
244 | stunt
245 | sun
246 | swagger
247 | swanson
248 | sword
249 | talon
250 | tent
251 | thunder
252 | tiger
253 | tire
254 | titanium
255 | toast
256 | tomahawk
257 | tomcat
258 | tornado
259 | torpedo
260 | truck
261 | turbo
262 | turkeyleg
263 | typhoon
264 | uppercut
265 | urge
266 | valhalla
267 | valley
268 | vengeance
269 | victory
270 | vigor
271 | viking
272 | viper
273 | war
274 | warrior
275 | warthog
276 | weakness
277 | whiskey
278 | wizard
279 | wolf
280 | wolves
281 |
--------------------------------------------------------------------------------
/dict/rugged/verbs.txt:
--------------------------------------------------------------------------------
1 | alert
2 | allege
3 | annihilate
4 | answer
5 | arrest
6 | attack
7 | awake
8 | balk
9 | ban
10 | bandage
11 | bang
12 | barbecue
13 | bark
14 | barter
15 | bask
16 | baste
17 | battle
18 | bellow
19 | bend
20 | besiege
21 | bestow
22 | bite
23 | bleed
24 | boast
25 | boil
26 | bolt
27 | bomb
28 | breach
29 | break
30 | breed
31 | broil
32 | bruise
33 | build
34 | bulge
35 | burn
36 | bury
37 | camp
38 | carve
39 | chant
40 | chase
41 | chew
42 | choke
43 | chomp
44 | chop
45 | chug
46 | claim
47 | climb
48 | clip
49 | coach
50 | command
51 | conquer
52 | cough
53 | crack
54 | crash
55 | crush
56 | cry
57 | cure
58 | curl
59 | cut
60 | damage
61 | dare
62 | decay
63 | deceive
64 | defeat
65 | deliver
66 | demand
67 | destroy
68 | dethrone
69 | dictate
70 | die
71 | dig
72 | dislike
73 | dive
74 | divide
75 | divulge
76 | dominate
77 | drag
78 | drain
79 | dread
80 | drill
81 | drink
82 | drip
83 | dump
84 | eat
85 | encode
86 | engulf
87 | escape
88 | evacuate
89 | explode
90 | explore
91 | fade
92 | fail
93 | fall
94 | fasten
95 | feast
96 | fight
97 | fix
98 | flex
99 | fly
100 | force
101 | fry
102 | gaze
103 | gnaw
104 | gorge
105 | grab
106 | grill
107 | grip
108 | growl
109 | grumble
110 | grunt
111 | guard
112 | gurgle
113 | handle
114 | hang
115 | harass
116 | harm
117 | hate
118 | haunt
119 | hibernate
120 | hide
121 | hijack
122 | hinder
123 | hiss
124 | hit
125 | hoist
126 | howl
127 | hunt
128 | hurt
129 | impose
130 | infect
131 | infuse
132 | itch
133 | jam
134 | jolt
135 | jump
136 | kick
137 | kill
138 | knock
139 | knot
140 | land
141 | launch
142 | lift
143 | manhandle
144 | marvel
145 | mate
146 | measure
147 | melt
148 | mend
149 | merge
150 | mount
151 | mow
152 | murder
153 | park
154 | plow
155 | polish
156 | preserve
157 | protect
158 | pry
159 | pull
160 | pummel
161 | pump
162 | punch
163 | puncture
164 | punish
165 | pursue
166 | push
167 | race
168 | rave
169 | reign
170 | repair
171 | report
172 | reprimand
173 | request
174 | rescue
175 | ride
176 | rip
177 | risk
178 | roar
179 | rock
180 | roll
181 | rot
182 | run
183 | rush
184 | sack
185 | sail
186 | saw
187 | scale
188 | scold
189 | scorch
190 | scrape
191 | scratch
192 | scream
193 | screech
194 | seal
195 | seize
196 | sever
197 | shade
198 | shave
199 | shock
200 | shoot
201 | shout
202 | shriek
203 | signal
204 | sin
205 | singe
206 | ski
207 | slap
208 | sleep
209 | smash
210 | smoke
211 | snore
212 | soak
213 | soar
214 | spark
215 | squash
216 | squeeze
217 | stab
218 | stain
219 | stamp
220 | stare
221 | steer
222 | stitch
223 | stoke
224 | storm
225 | strengthen
226 | stretch
227 | strike
228 | strut
229 | stuff
230 | stun
231 | submerge
232 | surround
233 | tackle
234 | tame
235 | taunt
236 | tear
237 | tempt
238 | terrify
239 | thaw
240 | threaten
241 | thrust
242 | tie
243 | tow
244 | track
245 | trade
246 | transcend
247 | trap
248 | traverse
249 | trim
250 | triumph
251 | trust
252 | tug
253 | unite
254 | uppercut
255 | vanquish
256 | watch
257 | weigh
258 | whip
259 | wipe
260 | work
261 | wreck
262 | wrestle
263 | yield
264 |
--------------------------------------------------------------------------------
/lib/namor.ex:
--------------------------------------------------------------------------------
1 | defmodule Namor do
2 | @moduledoc """
3 | A subdomain-safe name generator. Check out the [README](readme.html) to get started.
4 | """
5 |
6 | alias Namor.Helpers
7 |
8 | @type dictionary_type :: :default | :rugged
9 | @type salt_type :: :numbers | :letters | :mixed
10 | @type_generate_options quote(
11 | do: [
12 | words: integer,
13 | salt: integer,
14 | salt_type: salt_type,
15 | separator: binary
16 | ]
17 | )
18 |
19 | @strip_nonalphanumeric_pattern ~r/[^a-zA-Z0-9]/
20 | @valid_subdomain_pattern ~r/^[\w](?:[\w-]{0,61}[\w])?$/
21 |
22 | @reserved Namor.Helpers.get_dict!("reserved.txt")
23 | @dictionaries %{
24 | default: Namor.Helpers.get_dict!(:default),
25 | rugged: Namor.Helpers.get_dict!(:rugged)
26 | }
27 |
28 | @doc false
29 | defmacro __using__(_opts) do
30 | quote do
31 | # TODO: Allow custom dictionaries to be passed through `opts`
32 | end
33 | end
34 |
35 | @doc """
36 | Get Namor's dictionaries.
37 | """
38 | @spec get_dictionaries :: %{binary => Namor.Dictionary.t()}
39 | def get_dictionaries, do: @dictionaries
40 |
41 | @doc """
42 | Get Namor's reserved word list.
43 | """
44 | @spec get_reserved :: [binary]
45 | def get_reserved, do: @reserved
46 |
47 | @doc """
48 | Generates a random name from a Namor dictionary.
49 |
50 | Returns `{:ok, name}` for a successfully generated name, or
51 | `{:error, reason}` if something goes wrong. See [Custom Dictionaries](README.md#custom-dictionaries)
52 | for instructions on how to use a custom dictionary.
53 |
54 | ## Options
55 |
56 | * `:words` - Number of words to generate. Must be <=4. Defaults to `2`.
57 | * `:salt` - Length of the salt to append. Must be >=0. Defaults to `0`.
58 | * `:salt_type` - Whether the salt should contain numbers, letters, or both. Defaults to `:mixed`.
59 | * `:separator` - String to use as a separator between words. Defaults to `-`.
60 | * `:dictionary` - Namor dictionary to use. Defaults to `:default`.
61 |
62 | ## Error Reasons
63 |
64 | * `:dict_not_found` - Could not find the specified dictionary.
65 |
66 | ## Example
67 |
68 | iex> require Namor
69 | Namor
70 |
71 | iex> Namor.generate(words: 3, dictionary: :rugged)
72 | {:ok, "savage-whiskey-stain"}
73 |
74 | """
75 | @spec generate([unquote_splicing(@type_generate_options), dictionary: dictionary_type]) ::
76 | {:ok, binary} | {:error, atom}
77 |
78 | defmacro generate(opts \\ []) when is_list(opts) do
79 | {dictionary, opts} = Keyword.pop(opts, :dictionary, :default)
80 |
81 | quote do
82 | case Namor.get_dictionaries() |> Map.get(unquote(dictionary)) do
83 | nil -> {:error, :dict_not_found}
84 | dict -> Namor.generate(unquote(opts), dict)
85 | end
86 | end
87 | end
88 |
89 | @doc """
90 | Generates a random name from a custom dictionary.
91 |
92 | Returns `{:ok, name}` for a successfully generated name. Takes the
93 | same options as `generate/1` with the exception of `:dictionary`.
94 | """
95 | @spec generate(unquote(@type_generate_options), Namor.Dictionary.t()) :: {:ok, binary}
96 |
97 | def generate(opts, %Namor.Dictionary{} = dict) when is_list(opts) do
98 | words = Keyword.get(opts, :words, 2)
99 | salt = Keyword.get(opts, :salt, 0)
100 | salt_type = Keyword.get(opts, :salt_type, :mixed)
101 | separator = Keyword.get(opts, :separator, "-") |> to_string()
102 |
103 | name =
104 | words
105 | |> Helpers.get_pattern()
106 | |> Enum.map_join(separator, &(Map.get(dict, &1) |> Enum.random()))
107 |
108 | {:ok, if(salt > 0, do: with_salt(name, salt, separator, salt_type), else: name)}
109 | end
110 |
111 | @doc """
112 | Appends a salt to a value.
113 |
114 | If you want to use a custom charlist for the salt, use
115 | `Namor.Helpers.get_salt/2` instead.
116 | """
117 | @spec with_salt(binary, integer, binary, salt_type) :: binary
118 |
119 | def with_salt(value, length, separator \\ "-", type \\ :mixed) do
120 | chars =
121 | case type do
122 | :numbers -> '0123456789'
123 | :letters -> 'abcdefghijklmnopqrstuvwxyz'
124 | :mixed -> 'abcdefghijklmnopqrstuvwxyz0123456789'
125 | end
126 |
127 | value <> separator <> Helpers.get_salt(length, chars)
128 | end
129 |
130 | @doc """
131 | Checks whether a value exists in Namor's list of reserved words.
132 |
133 | See `reserved?/2` for more info. See [Custom Dictionaries](README.md#custom-dictionaries)
134 | for instructions on how to use a custom reserved word list.
135 | """
136 | @spec reserved?(binary) :: boolean
137 |
138 | defmacro reserved?(value) when is_binary(value),
139 | do: quote(do: Namor.reserved?(unquote(value), Namor.get_reserved()))
140 |
141 | @doc """
142 | Checks whether a value exists in a provided list of reserved words.
143 |
144 | Before checking, the value is stripped of all special characters.
145 | So for example, `log-in` will still return true if `["login"]` is
146 | passed to `reserved`.
147 | """
148 | @spec reserved?(binary, [binary]) :: boolean
149 |
150 | def reserved?(value, reserved) when is_binary(value) and is_list(reserved),
151 | do: Enum.member?(reserved, Regex.replace(@strip_nonalphanumeric_pattern, value, ""))
152 |
153 | @doc """
154 | Checks whether a given value is a valid subdomain.
155 |
156 | Valid subdomains contain no special characters other than `-`, and
157 | are 63 characters or less.
158 | """
159 | @spec subdomain?(binary) :: boolean
160 |
161 | def subdomain?(value) when is_binary(value),
162 | do: Regex.match?(@valid_subdomain_pattern, value)
163 | end
164 |
--------------------------------------------------------------------------------
/lib/namor/dictionary.ex:
--------------------------------------------------------------------------------
1 | defmodule Namor.Dictionary do
2 | defstruct [:adjectives, :nouns, :verbs]
3 |
4 | @type t :: %__MODULE__{
5 | adjectives: [binary],
6 | nouns: [binary],
7 | verbs: [binary]
8 | }
9 | end
10 |
--------------------------------------------------------------------------------
/lib/namor/helpers.ex:
--------------------------------------------------------------------------------
1 | defmodule Namor.Helpers do
2 | @moduledoc """
3 | Supporting functions for dictionaries and name generation.
4 | """
5 |
6 | @doc """
7 | Reads word lists from a base folder and returns a parsed dictionary map.
8 |
9 | A dictionary folder is expected to be a directory containing three files:
10 | `adjectives.txt`, `nouns.txt`, and `verbs.txt`. Each file should
11 | have one word per line with no duplicate words.
12 |
13 | If the dictionary name is set to a string, it will only attempt
14 | to read the one file and return a single list instead of a map.
15 | Raises a `File.Error` exception if any of the dictionary files
16 | are not found.
17 |
18 | ┌── reserved.txt
19 | ├── foobar/
20 | │ ┌── adjectives.txt
21 | │ ├── nouns.txt
22 | │ └── verbs.txt
23 |
24 | iex> Namor.Helpers.get_dict("reserved.txt")
25 | ["foo", "bar"]
26 |
27 | iex> Namor.Helpers.get_dict(:foobar)
28 | %{adjectives: ["foo"], nouns: ["bar"], verbs: ["baz"]}
29 |
30 | If not provided, `base_path` will fallback to Namor's internal dictionary
31 | path.
32 | """
33 | @spec get_dict!(binary | atom, binary) :: Namor.Dictionary.t() | [binary]
34 |
35 | def get_dict!(name, base_path \\ nil)
36 |
37 | def get_dict!(name, base_path) when is_binary(name) do
38 | do_get_dict!(name, base_path)
39 | end
40 |
41 | def get_dict!(name, base_path) when is_atom(name) do
42 | Enum.reduce([:adjectives, :nouns, :verbs], %Namor.Dictionary{}, fn type, acc ->
43 | filename = Atom.to_string(name) |> Path.join("#{type}.txt")
44 | Map.put(acc, type, do_get_dict!(filename, base_path))
45 | end)
46 | end
47 |
48 | defp do_get_dict!(filename, base_path) do
49 | base_path = base_path || Path.expand("../../dict", __DIR__)
50 |
51 | base_path
52 | |> Path.join(filename)
53 | |> File.read!()
54 | |> String.trim()
55 | |> String.split("\n")
56 | end
57 |
58 | @doc """
59 | Returns a word pattern for adjectives, nouns, and verbs in the
60 | proper order.
61 |
62 | Only supports patterns with a size up to 4.
63 |
64 | iex> Namor.Helpers.get_pattern(4)
65 | [:adjectives, :nouns, :nouns, :verbs]
66 | """
67 | @spec get_pattern(integer) :: [atom]
68 |
69 | def get_pattern(size) when is_integer(size) and size > 0 and size < 5 do
70 | case size do
71 | 1 -> Enum.random([[:adjectives], [:nouns], [:verbs]])
72 | 2 -> Enum.random([[:adjectives, :nouns], [:nouns, :verbs]])
73 | 3 -> [:adjectives, :nouns, :verbs]
74 | 4 -> [:adjectives, :nouns, :nouns, :verbs]
75 | end
76 | end
77 |
78 | @doc """
79 | Generates a random salt from a character list that can be appended
80 | to a name for uniqueness.
81 | """
82 | @spec get_salt(integer, charlist) :: [binary]
83 |
84 | def get_salt(size, chars) when is_integer(size) and size > 0 do
85 | for _ <- 1..size, into: "", do: <>
86 | end
87 | end
88 |
--------------------------------------------------------------------------------
/mix.exs:
--------------------------------------------------------------------------------
1 | defmodule Namor.MixProject do
2 | use Mix.Project
3 |
4 | @url "https://github.com/jsonmaur/namor"
5 |
6 | def project do
7 | [
8 | app: :namor,
9 | name: "Namor",
10 | version: "1.0.3",
11 | elixir: "~> 1.13",
12 | build_embedded: Mix.env() == :prod,
13 | start_permanent: Mix.env() == :prod,
14 | deps: deps(),
15 | aliases: aliases(),
16 | source_url: @url,
17 | homepage_url: "#{@url}#readme",
18 | description: "A subdomain-safe name generator",
19 | package: [
20 | licenses: ["MIT"],
21 | links: %{"GitHub" => @url, "Demo" => "https://namor.jsonmaur.com"},
22 | files: ~w(dict lib .formatter.exs CHANGELOG.md LICENSE mix.exs README.md)
23 | ],
24 | docs: [
25 | main: "readme",
26 | extras: ["README.md"],
27 | authors: ["Jason Maurer"]
28 | ]
29 | ]
30 | end
31 |
32 | def application do
33 | [
34 | extra_applications: [:logger]
35 | ]
36 | end
37 |
38 | defp deps do
39 | [
40 | {:ex_doc, "~> 0.27", only: :dev, runtime: false}
41 | ]
42 | end
43 |
44 | defp aliases do
45 | [
46 | test: [
47 | "format --check-formatted",
48 | "deps.unlock --check-unused",
49 | "compile --warnings-as-errors",
50 | "test"
51 | ]
52 | ]
53 | end
54 | end
55 |
--------------------------------------------------------------------------------
/mix.lock:
--------------------------------------------------------------------------------
1 | %{
2 | "earmark_parser": {:hex, :earmark_parser, "1.4.32", "fa739a0ecfa34493de19426681b23f6814573faee95dfd4b4aafe15a7b5b32c6", [:mix], [], "hexpm", "b8b0dd77d60373e77a3d7e8afa598f325e49e8663a51bcc2b88ef41838cca755"},
3 | "ex_doc": {:hex, :ex_doc, "0.29.4", "6257ecbb20c7396b1fe5accd55b7b0d23f44b6aa18017b415cb4c2b91d997729", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2c6699a737ae46cb61e4ed012af931b57b699643b24dabe2400a8168414bc4f5"},
4 | "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
5 | "makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
6 | "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"},
7 | "nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"},
8 | }
9 |
--------------------------------------------------------------------------------
/test/dict/custom/adjectives.txt:
--------------------------------------------------------------------------------
1 | one
2 | two
3 |
--------------------------------------------------------------------------------
/test/dict/custom/nouns.txt:
--------------------------------------------------------------------------------
1 | three
2 | four
3 |
--------------------------------------------------------------------------------
/test/dict/custom/verbs.txt:
--------------------------------------------------------------------------------
1 | five
2 | six
3 |
--------------------------------------------------------------------------------
/test/dict/reserved.txt:
--------------------------------------------------------------------------------
1 | foobar
2 |
--------------------------------------------------------------------------------
/test/namor/dictionary_test.exs:
--------------------------------------------------------------------------------
1 | defmodule DictTest do
2 | use ExUnit.Case
3 |
4 | alias Namor.Helpers
5 |
6 | @dict_dir Path.expand("../../dict", __DIR__)
7 |
8 | test "should create dictionary struct" do
9 | assert %{adjectives: nil, nouns: nil, verbs: nil} = %Namor.Dictionary{}
10 | end
11 |
12 | describe "dict files" do
13 | test "should be no reserved words in default nouns" do
14 | assert_no_reserved(:default)
15 | assert_no_duplicates(:default)
16 | end
17 |
18 | test "should be no reserved words in rugged nouns" do
19 | assert_no_reserved(:rugged)
20 | assert_no_duplicates(:rugged)
21 | end
22 | end
23 |
24 | defp assert_no_reserved(name) do
25 | dict = Helpers.get_dict!(name, @dict_dir)
26 |
27 | for word <- Helpers.get_dict!("reserved.txt", @dict_dir),
28 | {type, words} <- Map.from_struct(dict) do
29 | if Enum.member?(words, word) do
30 | flunk("\"#{word}\" is a reserved word, but found it in #{name}.#{type}")
31 | end
32 | end
33 | end
34 |
35 | defp assert_no_duplicates(name) do
36 | dict = Helpers.get_dict!(name, @dict_dir)
37 |
38 | for {type, words} <- Map.from_struct(dict) do
39 | if (duplicated = words -- Enum.uniq(words)) != [] do
40 | flunk("Found some duplicated words in #{name}.#{type}: #{Enum.join(duplicated, ", ")}")
41 | end
42 | end
43 | end
44 | end
45 |
--------------------------------------------------------------------------------
/test/namor/helpers_test.exs:
--------------------------------------------------------------------------------
1 | defmodule Namor.HelpersTest do
2 | use ExUnit.Case
3 |
4 | alias Namor.Helpers
5 |
6 | describe "get_dict!/2" do
7 | setup do
8 | %{base_path: Path.expand("../dict", __DIR__)}
9 | end
10 |
11 | test "should read all dict files", %{base_path: base_path} do
12 | dict = Helpers.get_dict!(:custom, base_path)
13 |
14 | assert dict.adjectives == ["one", "two"]
15 | assert dict.nouns == ["three", "four"]
16 | assert dict.verbs == ["five", "six"]
17 | end
18 |
19 | test "should read reserved dict file", %{base_path: base_path} do
20 | dict = Helpers.get_dict!("reserved.txt", base_path)
21 | assert dict == ["foobar"]
22 | end
23 |
24 | test "should raise error if dict files are not found" do
25 | assert_raise File.Error, fn -> Helpers.get_dict!(:custom, "") end
26 | end
27 | end
28 |
29 | describe "get_pattern/1" do
30 | test "should return pattern for 1-4 words" do
31 | assert Helpers.get_pattern(1) |> Enum.count() == 1
32 | assert Helpers.get_pattern(2) |> Enum.count() == 2
33 | assert Helpers.get_pattern(3) |> Enum.count() == 3
34 | assert Helpers.get_pattern(4) |> Enum.count() == 4
35 | end
36 |
37 | test "should raise with incorrect params" do
38 | assert_raise FunctionClauseError, fn -> Helpers.get_pattern(0) end
39 | assert_raise FunctionClauseError, fn -> Helpers.get_pattern(5) end
40 | assert_raise FunctionClauseError, fn -> Helpers.get_pattern("5") end
41 | end
42 | end
43 |
44 | describe "get_salt/1" do
45 | test "should generate a salt" do
46 | assert Helpers.get_salt(5, 'abc123') =~ ~r/^[abc123]{5}$/
47 | end
48 |
49 | test "should raise with incorrect params" do
50 | assert_raise FunctionClauseError, fn -> Helpers.get_salt(0, 'a') end
51 | assert_raise FunctionClauseError, fn -> Helpers.get_salt("5", 'a') end
52 | end
53 | end
54 | end
55 |
--------------------------------------------------------------------------------
/test/namor_test.exs:
--------------------------------------------------------------------------------
1 | defmodule NamorTest do
2 | use ExUnit.Case
3 | use Namor
4 |
5 | describe "get_dictionaries/0" do
6 | test "should get all dictionaries" do
7 | dictionaries = Namor.get_dictionaries()
8 | assert Map.has_key?(dictionaries, :default)
9 | assert Map.has_key?(dictionaries, :rugged)
10 | end
11 | end
12 |
13 | describe "get_reserved/0" do
14 | test "should get reserved word list" do
15 | assert Namor.get_reserved() |> Enum.count() > 0
16 | end
17 | end
18 |
19 | describe "generate/1" do
20 | test "should generate a name" do
21 | assert {:ok, name} = Namor.generate()
22 | assert String.split(name, "-") |> Enum.count() == 2
23 | end
24 |
25 | test "should generate a name from default dictionary" do
26 | assert {:ok, name} = Namor.generate(words: 3)
27 | assert [adjective, _, _] = String.split(name, "-")
28 | assert Namor.Helpers.get_dict!(:default).adjectives |> Enum.member?(adjective)
29 | end
30 |
31 | test "should generate a name with an alternate dictionary" do
32 | assert {:ok, name} = Namor.generate(words: 3, dictionary: :rugged)
33 | assert [adjective, _, _] = String.split(name, "-")
34 | assert Namor.Helpers.get_dict!(:rugged).adjectives |> Enum.member?(adjective)
35 | end
36 |
37 | test "should return error if dictionary doesn't exist" do
38 | assert {:error, :dict_not_found} = Namor.generate(dictionary: :foobar)
39 | end
40 | end
41 |
42 | describe "generate/2" do
43 | setup do
44 | %{dict: Namor.Helpers.get_dict!(:custom, Path.expand("./dict", __DIR__))}
45 | end
46 |
47 | test "should generate a name", %{dict: dict} do
48 | assert {:ok, name} = Namor.generate([], dict)
49 | assert String.split(name, "-") |> Enum.count() == 2
50 | assert name =~ ~r/three|four/
51 | end
52 |
53 | test "should generate a name with 1 word", %{dict: dict} do
54 | assert {:ok, name} = Namor.generate([words: 1], dict)
55 | assert name =~ ~r/one|two|three|four|five|six/
56 | refute name =~ "-"
57 | end
58 |
59 | test "should generate a name with 3 words", %{dict: dict} do
60 | assert {:ok, name} = Namor.generate([words: 3], dict)
61 | assert String.split(name, "-") |> Enum.count() == 3
62 | assert name =~ ~r/(?:one|two)-(?:three|four)-(?:five|six)/
63 | end
64 |
65 | test "should generate a name with 4 words", %{dict: dict} do
66 | assert {:ok, name} = Namor.generate([words: 4], dict)
67 | assert String.split(name, "-") |> Enum.count() == 4
68 | assert name =~ ~r/(?:one|two)-(?:three|four)-(?:three|four)-(?:five|six)/
69 | end
70 |
71 | test "should max out at 4 words", %{dict: dict} do
72 | assert_raise FunctionClauseError, fn -> Namor.generate([words: 5], dict) end
73 | end
74 |
75 | test "should generate a name with a mixed salt", %{dict: dict} do
76 | assert {:ok, name} = Namor.generate([salt: 10], dict)
77 | assert [_, _, salt] = String.split(name, "-")
78 | assert salt =~ ~r/^[a-z0-9]{10}$/
79 | end
80 |
81 | test "should generate a name with a numeric salt", %{dict: dict} do
82 | assert {:ok, name} = Namor.generate([salt: 10, salt_type: :numbers], dict)
83 | assert [_, _, salt] = String.split(name, "-")
84 | assert salt =~ ~r/^[0-9]{10}$/
85 | end
86 |
87 | test "should generate a name with a letter salt", %{dict: dict} do
88 | assert {:ok, name} = Namor.generate([salt: 10, salt_type: :letters], dict)
89 | assert [_, _, salt] = String.split(name, "-")
90 | assert salt =~ ~r/^[a-z]{10}$/
91 | end
92 |
93 | test "should generate a name with a custom separator", %{dict: dict} do
94 | assert {:ok, name} = Namor.generate([separator: "_"], dict)
95 | assert String.split(name, "_") |> Enum.count() == 2
96 | end
97 |
98 | test "should not crash with a nil separator", %{dict: dict} do
99 | assert {:ok, name} = Namor.generate([separator: nil], dict)
100 | assert name =~ ~r/^[a-zA-Z]*$/
101 | end
102 |
103 | test "should raise with incorrect params" do
104 | assert_raise FunctionClauseError, fn -> Namor.generate([], "foo") end
105 | end
106 | end
107 |
108 | describe "with_salt/4" do
109 | test "should append a salt to a value" do
110 | assert Namor.with_salt("foobar", 5) =~ ~r/^foobar-[a-zA-Z0-9]{5}$/
111 | end
112 |
113 | test "should append a salt to a value with options" do
114 | assert Namor.with_salt("foobar", 5, "_", :numbers) =~ ~r/^foobar_[0-9]{5}$/
115 | end
116 | end
117 |
118 | describe "reserved?/1" do
119 | test "should invalidate a reserved subdomain from default reserved list" do
120 | assert Namor.reserved?("login")
121 | refute Namor.reserved?("foobar")
122 | end
123 | end
124 |
125 | describe "reserved?/2" do
126 | test "should invalidate a reserved subdomain" do
127 | base_path = Path.expand("./dict", __DIR__)
128 | reserved = Namor.Helpers.get_dict!("reserved.txt", base_path)
129 |
130 | assert Namor.reserved?("foobar", reserved)
131 | assert Namor.reserved?("foo-bar", reserved)
132 | assert Namor.reserved?("foo bar", reserved)
133 | assert Namor.reserved?("foo--bar", reserved)
134 | assert Namor.reserved?(" foo bar ", reserved)
135 | refute Namor.reserved?("login", reserved)
136 | end
137 | end
138 |
139 | describe "subdomain?/2" do
140 | test "should validate a subdomain" do
141 | assert Namor.subdomain?("foo")
142 | assert Namor.subdomain?("foo-bar")
143 | end
144 |
145 | test "should invalidate a subdomain" do
146 | refute Namor.subdomain?("-foo-bar")
147 | refute Namor.subdomain?("foo-bar-")
148 | refute Namor.subdomain?("foo$bar")
149 | refute Namor.subdomain?("$foobar")
150 | refute Namor.subdomain?("foobar!")
151 | refute Namor.subdomain?("foo bar")
152 | assert_raise FunctionClauseError, fn -> refute Namor.subdomain?(1) end
153 | end
154 |
155 | test "should invalidate a long subdomain" do
156 | assert String.duplicate("a", 63) |> Namor.subdomain?()
157 | refute String.duplicate("a", 64) |> Namor.subdomain?()
158 | end
159 | end
160 | end
161 |
--------------------------------------------------------------------------------
/test/test_helper.exs:
--------------------------------------------------------------------------------
1 | ExUnit.start()
2 |
--------------------------------------------------------------------------------