env_parser 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9709d56b0998b3cddaed366bbcbeec3c58a1eabf
4
- data.tar.gz: 8d6566e451cfb918e26fd686582bb3dc2f106a8e
3
+ metadata.gz: c4a74430339836ddc96fb9cc9a263cda76cd56e8
4
+ data.tar.gz: 54a8006eafc16759eaf77d5b599f3d971ceaa1cc
5
5
  SHA512:
6
- metadata.gz: 7618c2104a3e48b625c9e6f9999fd1fb7308434b7c83b66c4f8880f1be369ecd4a96d1c9a4caba2bbcba50323e9f6aaefb2cfd7592a3664c61dacc165e03ba93
7
- data.tar.gz: b4f4c4333d98ba7a20c9aa876fc649e66a127f6784b3bc770079f365c5def4ef70bcaae006cf21ca1d0beac09c5f20089f66123640386636d90fb24fefbff433
6
+ metadata.gz: 1fb0f1411eed85ebb78ef6d60954252a1625bffb4a7018c2273eaee3412cf932fa48e3d09028b9786054ecf4df683244f9ceaa9727d70254343107b2d14eb81d
7
+ data.tar.gz: 855b7753725fdc5da43cb1d064fbf96717e50e0e4bb8190c40a58f2d73ad29eeff3b3156ed125ba215f45c83587d27d8cbdd0b34a0d715d69931d4b3ec50eb41
@@ -0,0 +1,62 @@
1
+ # Ruby CircleCI 2.0 configuration file
2
+ #
3
+ # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
+ #
5
+ version: 2
6
+ jobs:
7
+ build:
8
+ docker:
9
+ # specify the version you desire here
10
+ - image: circleci/ruby:2.4.1-node-browsers
11
+
12
+ # Specify service dependencies here if necessary
13
+ # CircleCI maintains a library of pre-built images
14
+ # documented at https://circleci.com/docs/2.0/circleci-images/
15
+ # - image: circleci/postgres:9.4
16
+
17
+ working_directory: ~/repo
18
+
19
+ steps:
20
+ - checkout
21
+
22
+ # Download and cache dependencies
23
+ - restore_cache:
24
+ keys:
25
+ - v1-dependencies-{{ checksum "Gemfile.lock" }}
26
+ # fallback to using the latest cache if no exact match is found
27
+ - v1-dependencies-
28
+
29
+ - run:
30
+ name: update bundler
31
+ command: |
32
+ gem install bundler --version $(tail -n 1 ~/repo/Gemfile.lock | tr -d ' ')
33
+
34
+ - run:
35
+ name: install dependencies
36
+ command: |
37
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
38
+
39
+ - save_cache:
40
+ paths:
41
+ - ./vendor/bundle
42
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
43
+
44
+ # run tests!
45
+ - run:
46
+ name: run tests
47
+ command: |
48
+ mkdir /tmp/test-results
49
+ TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
50
+
51
+ bundle exec rspec --format progress \
52
+ --format RspecJunitFormatter \
53
+ --out /tmp/test-results/rspec.xml \
54
+ --format progress \
55
+ "${TEST_FILES}"
56
+
57
+ # collect reports
58
+ - store_test_results:
59
+ path: /tmp/test-results
60
+ - store_artifacts:
61
+ path: /tmp/test-results
62
+ destination: test-results
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- env_parser (0.1.0)
4
+ env_parser (0.3.0)
5
5
  activesupport (>= 5.0.0)
6
6
 
7
7
  GEM
@@ -31,6 +31,8 @@ GEM
31
31
  diff-lcs (>= 1.2.0, < 2.0)
32
32
  rspec-support (~> 3.7.0)
33
33
  rspec-support (3.7.0)
34
+ rspec_junit_formatter (0.3.0)
35
+ rspec-core (>= 2, < 4, != 2.12.0)
34
36
  thread_safe (0.3.6)
35
37
  tzinfo (1.2.4)
36
38
  thread_safe (~> 0.1)
@@ -43,6 +45,7 @@ DEPENDENCIES
43
45
  env_parser!
44
46
  rake (~> 10.0)
45
47
  rspec (~> 3.0)
48
+ rspec_junit_formatter
46
49
 
47
50
  BUNDLED WITH
48
51
  1.16.0
data/README.md CHANGED
@@ -39,6 +39,27 @@ timeout_ms = EnvParser.parse ENV['TIMEOUT_MS'], as: :integer
39
39
  ## (i.e. passing in `ENV['X']` is equivalent to passing in `:X`)
40
40
  ##
41
41
  timeout_ms = EnvParser.parse :TIMEOUT_MS, as: :integer
42
+
43
+ ## If the ENV variable you want is unset (`nil`) or blank (`''`),
44
+ ## the return value is a sensible default for the given "as" type.
45
+ ## Sometimes you want a non-trivial default (not just 0, '', etc), however.
46
+ ##
47
+ EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer ## => 0
48
+ EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset: 250 ## => 250
49
+
50
+ ## Note that "if_unset" values are used as-is, with no type conversion.
51
+ ##
52
+ EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset: 'oof!' ## => 'oof!'
53
+
54
+ ## You can also restrict the set of allowed values.
55
+ ## (Sometimes setting the type alone is a bit too open-ended.)
56
+ ##
57
+ EnvParser.parse :API_TO_USE, as: :symbol, from_set: %i[internal external]
58
+ EnvParser.parse :SOME_CUSTOM_NETWORK_PORT, as: :integer, from_set: (1..65535), if_unset: 80
59
+
60
+ ## And if the value is not allowed...
61
+ ##
62
+ EnvParser.parse :SOME_NEGATIVE_NUMBER, as: :integer, from_set: (1..5) ## => raises EnvParser::ValueNotAllowed
42
63
  ```
43
64
 
44
65
  ---
@@ -66,8 +87,6 @@ Note JSON is parsed using *quirks-mode* (meaning 'true', '25', and 'null' are al
66
87
  ## Feature Roadmap / Future Development
67
88
 
68
89
  Additional features/options coming in the future:
69
- - An `:if_unset` option to more easily set default values.
70
- - A `:from_set` option to restrict acceptable values to those on a given list.
71
90
  - An `EnvParser.load` method that will not only parse the given value, but will set a constant, easily converting environment variables into constants in your code.
72
91
  - An `EnvParser.load_all` method to shortcut multiple `.load` calls.
73
92
  - A means to **optionally** bind `#parse`, `#load`, and `#load_all` methods onto `ENV` itself (not all hashes!). Because `ENV.parse ...` reads better than `EnvParser.parse ...`.
@@ -0,0 +1,136 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Exception: EnvParser::ValueNotAllowed
8
+
9
+ &mdash; Documentation by YARD 0.9.11
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ pathId = "EnvParser::ValueNotAllowed";
19
+ relpath = '../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../_index.html">Index (V)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../EnvParser.html" title="EnvParser (class)">EnvParser</a></span></span>
41
+ &raquo;
42
+ <span class="title">ValueNotAllowed</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Exception: EnvParser::ValueNotAllowed
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">StandardError</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">StandardError</li>
78
+
79
+ <li class="next">EnvParser::ValueNotAllowed</li>
80
+
81
+ </ul>
82
+ <a href="#" class="inheritanceTree">show all</a>
83
+
84
+ </dd>
85
+ </dl>
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ <dl>
98
+ <dt>Defined in:</dt>
99
+ <dd>lib/env_parser.rb</dd>
100
+ </dl>
101
+
102
+ </div>
103
+
104
+ <h2>Overview</h2><div class="docstring">
105
+ <div class="discussion">
106
+
107
+ <p>Exception class used to indicate parsed values not allowed per a “from_set”
108
+ option.</p>
109
+
110
+
111
+ </div>
112
+ </div>
113
+ <div class="tags">
114
+
115
+
116
+ </div>
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+ </div>
127
+
128
+ <div id="footer">
129
+ Generated on Wed Nov 29 18:34:06 2017 by
130
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
131
+ 0.9.11 (ruby-2.4.2).
132
+ </div>
133
+
134
+ </div>
135
+ </body>
136
+ </html>
data/docs/EnvParser.html CHANGED
@@ -113,14 +113,24 @@ different data types.</p>
113
113
  <div class="tags">
114
114
 
115
115
 
116
- </div>
116
+ </div><h2>Defined Under Namespace</h2>
117
+ <p class="children">
118
+
119
+
120
+
121
+
122
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="EnvParser/ValueNotAllowed.html" title="EnvParser::ValueNotAllowed (class)">ValueNotAllowed</a></span>
123
+
124
+
125
+ </p>
126
+
117
127
  <h2>Constant Summary</h2>
118
128
  <dl class="constants">
119
129
 
120
130
  <dt id="VERSION-constant" class="">VERSION =
121
131
 
122
132
  </dt>
123
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0.1.0</span><span class='tstring_end'>&#39;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
133
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0.3.0</span><span class='tstring_end'>&#39;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
124
134
 
125
135
  </dl>
126
136
 
@@ -265,6 +275,9 @@ source String to the requested type. Valid “as” types are:</p>
265
275
  </li><li>
266
276
  <p><code>:hash</code></p>
267
277
  </li></ul>
278
+
279
+ <p>If no “as” option is given (or the “as” value given is not on the above
280
+ list), an ArgumentError exception is raised.</p>
268
281
  </div>
269
282
 
270
283
  </li>
@@ -277,11 +290,36 @@ source String to the requested type. Valid “as” types are:</p>
277
290
  </span>
278
291
 
279
292
  &mdash; <div class='inline'>
280
- <p>Specifies the default value to return if the given “value” is either nil or
281
- an empty String (&#39;&#39;). Any “if_unset” value given will be returned
282
- as-is, with no type conversion or other change having been made. If
283
- unspecified, the “default” value for nil/&#39;&#39; input will depend on
284
- the “as” type.</p>
293
+ <p>Specifies the default value to return if the given “value” is either unset
294
+ (<code>nil</code>) or blank (<code>&#39;&#39;</code>). Any “if_unset” value
295
+ given will be returned as-is, with no type conversion or other change
296
+ having been made. If unspecified, the “default” value for
297
+ <code>nil</code>/<code>&#39;&#39;</code> input will depend on the “as”
298
+ type.</p>
299
+ </div>
300
+
301
+ </li>
302
+
303
+ <li>
304
+ <span class="name">from_set</span>
305
+ <span class="type">(<tt>Array</tt>, <tt>Range</tt>)</span>
306
+ <span class="default">
307
+
308
+ </span>
309
+
310
+ &mdash; <div class='inline'>
311
+ <p>Gives a limited set of allowed values (after type conversion). If, after
312
+ parsing, the final value is not included in the “from_set” list/range, an
313
+ EnvParser::ValueNotAllowed exception is raised.</p>
314
+
315
+ <p>Note that if the “if_unset” option is given and the value to parse is
316
+ <code>nil</code>/<code>&#39;&#39;</code>, the “if_unset” value will be
317
+ returned, even if it is not part of the “from_set” list/range.</p>
318
+
319
+ <p>Also note that, due to the nature of the lookup, the “from_set” option is
320
+ only available for scalar values (i.e. not arrays, hashes, or other
321
+ enumerables). An attempt to use the “from_set” option with a non-scalar
322
+ value will raise an ArgumentError exception.</p>
285
323
  </div>
286
324
 
287
325
  </li>
@@ -289,6 +327,19 @@ the “as” type.</p>
289
327
  </ul>
290
328
 
291
329
 
330
+ <p class="tag_title">Raises:</p>
331
+ <ul class="raise">
332
+
333
+ <li>
334
+
335
+
336
+ <span class='type'>(<tt>ArgumentError</tt>, <tt><span class='object_link'><a href="EnvParser/ValueNotAllowed.html" title="EnvParser::ValueNotAllowed (class)">EnvParser::ValueNotAllowed</a></span></tt>)</span>
337
+
338
+
339
+
340
+ </li>
341
+
342
+ </ul>
292
343
 
293
344
  </div><table class="source_code">
294
345
  <tr>
@@ -296,51 +347,51 @@ the “as” type.</p>
296
347
  <pre class="lines">
297
348
 
298
349
 
299
- 33
300
- 34
301
- 35
302
- 36
303
- 37
304
- 38
305
- 39
306
- 40
307
- 41
308
- 42
309
- 43
310
- 44
311
- 45
312
- 46
313
- 47
314
- 48
315
- 49
316
- 50
317
- 51
318
- 52
319
- 53</pre>
350
+ 55
351
+ 56
352
+ 57
353
+ 58
354
+ 59
355
+ 60
356
+ 61
357
+ 62
358
+ 63
359
+ 64
360
+ 65
361
+ 66
362
+ 67
363
+ 68
364
+ 69
365
+ 70
366
+ 71
367
+ 72
368
+ 73
369
+ 74
370
+ 75</pre>
320
371
  </td>
321
372
  <td>
322
- <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 33</span>
373
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 55</span>
323
374
 
324
375
  <span class='kw'>def</span> <span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
325
- <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>Symbol</span>
326
- <span class='const'>ENV</span><span class='lbracket'>[</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rbracket'>]</span>
327
- <span class='kw'>else</span>
328
- <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
329
- <span class='kw'>end</span>
376
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='const'>ENV</span><span class='lbracket'>[</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>Symbol</span>
377
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
330
378
 
331
379
  <span class='kw'>return</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:if_unset</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='symbol'>:if_unset</span><span class='rparen'>)</span>
332
380
 
333
- <span class='kw'>case</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:as</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
334
- <span class='kw'>when</span> <span class='symbol'>:string</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_string'>parse_string</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
335
- <span class='kw'>when</span> <span class='symbol'>:symbol</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_symbol'>parse_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
336
- <span class='kw'>when</span> <span class='symbol'>:boolean</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_boolean'>parse_boolean</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
337
- <span class='kw'>when</span> <span class='symbol'>:int</span><span class='comma'>,</span> <span class='symbol'>:integer</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_integer'>parse_integer</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
338
- <span class='kw'>when</span> <span class='symbol'>:float</span><span class='comma'>,</span> <span class='symbol'>:decimal</span><span class='comma'>,</span> <span class='symbol'>:number</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_float'>parse_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
339
- <span class='kw'>when</span> <span class='symbol'>:json</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_json'>parse_json</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
340
- <span class='kw'>when</span> <span class='symbol'>:array</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_array'>parse_array</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
341
- <span class='kw'>when</span> <span class='symbol'>:hash</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_hash'>parse_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
342
- <span class='kw'>else</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid `as` parameter: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:as</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
343
- <span class='kw'>end</span>
381
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>case</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:as</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
382
+ <span class='kw'>when</span> <span class='symbol'>:string</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_string'>parse_string</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
383
+ <span class='kw'>when</span> <span class='symbol'>:symbol</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_symbol'>parse_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
384
+ <span class='kw'>when</span> <span class='symbol'>:boolean</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_boolean'>parse_boolean</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
385
+ <span class='kw'>when</span> <span class='symbol'>:int</span><span class='comma'>,</span> <span class='symbol'>:integer</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_integer'>parse_integer</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
386
+ <span class='kw'>when</span> <span class='symbol'>:float</span><span class='comma'>,</span> <span class='symbol'>:decimal</span><span class='comma'>,</span> <span class='symbol'>:number</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_float'>parse_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
387
+ <span class='kw'>when</span> <span class='symbol'>:json</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_json'>parse_json</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
388
+ <span class='kw'>when</span> <span class='symbol'>:array</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_array'>parse_array</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
389
+ <span class='kw'>when</span> <span class='symbol'>:hash</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_hash'>parse_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
390
+ <span class='kw'>else</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid `as` parameter: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:as</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
391
+ <span class='kw'>end</span>
392
+
393
+ <span class='id identifier rubyid_check_for_set_inclusion'>check_for_set_inclusion</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>set:</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:from_set</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='symbol'>:from_set</span><span class='rparen'>)</span>
394
+ <span class='id identifier rubyid_value'>value</span>
344
395
  <span class='kw'>end</span></pre>
345
396
  </td>
346
397
  </tr>
@@ -352,7 +403,7 @@ the “as” type.</p>
352
403
  </div>
353
404
 
354
405
  <div id="footer">
355
- Generated on Wed Nov 29 06:44:05 2017 by
406
+ Generated on Wed Nov 29 18:34:06 2017 by
356
407
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
357
408
  0.9.11 (ruby-2.4.2).
358
409
  </div>
data/docs/_index.html CHANGED
@@ -88,6 +88,21 @@
88
88
  </ul>
89
89
  </ul>
90
90
 
91
+
92
+ <ul id="alpha_V" class="alpha">
93
+ <li class="letter">V</li>
94
+ <ul>
95
+
96
+ <li>
97
+ <span class='object_link'><a href="EnvParser/ValueNotAllowed.html" title="EnvParser::ValueNotAllowed (class)">ValueNotAllowed</a></span>
98
+
99
+ <small>(EnvParser)</small>
100
+
101
+ </li>
102
+
103
+ </ul>
104
+ </ul>
105
+
91
106
  </td>
92
107
  </tr>
93
108
  </table>
@@ -97,7 +112,7 @@
97
112
  </div>
98
113
 
99
114
  <div id="footer">
100
- Generated on Wed Nov 29 06:44:04 2017 by
115
+ Generated on Wed Nov 29 18:34:06 2017 by
101
116
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
102
117
  0.9.11 (ruby-2.4.2).
103
118
  </div>
data/docs/class_list.html CHANGED
@@ -43,7 +43,7 @@
43
43
 
44
44
  <ul id="full_list" class="class">
45
45
  <li id="object_" class="odd"><div class="item" style="padding-left:30px"><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></div></li>
46
- <li id='object_EnvParser' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="EnvParser.html" title="EnvParser (class)">EnvParser</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li>
46
+ <li id='object_EnvParser' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="EnvParser.html" title="EnvParser (class)">EnvParser</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div><ul><li id='object_EnvParser::ValueNotAllowed' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="EnvParser/ValueNotAllowed.html" title="EnvParser::ValueNotAllowed (class)">ValueNotAllowed</a></span> &lt; StandardError<small class='search_info'>EnvParser</small></div></li></ul></li>
47
47
 
48
48
  </ul>
49
49
  </div>
@@ -110,7 +110,35 @@ simple.</p>
110
110
 
111
111
  <h2 id="label-28i.e.+passing+in+ENV-5B-27X-27-5D+is+equivalent+to+passing+in+-3AX-29">(i.e. passing in <code>ENV['X']</code> is equivalent to passing in <code>:X</code>)</h2>
112
112
 
113
- <p>## timeout_ms = EnvParser.parse :TIMEOUT_MS, as: :integer “`</p>
113
+ <p>## timeout_ms = EnvParser.parse :TIMEOUT_MS, as: :integer</p>
114
+
115
+ <h2 id="label-If+the+ENV+variable+you+want+is+unset+-28nil-29+or+blank+-28-27-27-29-2C">If the ENV variable you want is unset (<code>nil</code>) or blank (<code>&#39;&#39;</code>),</h2>
116
+
117
+ <h2 id="label-the+return+value+is+a+sensible+default+for+the+given+-22as-22+type.">the return value is a sensible default for the given “as” type.</h2>
118
+
119
+ <h2 id="label-Sometimes+you+want+a+non-trivial+default+-28not+just+0-2C+-27-27-2C+etc-29-2C+however.">Sometimes you want a non-trivial default (not just 0, &#39;&#39;, etc), however.</h2>
120
+
121
+ <p>## EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer ## =&gt; 0
122
+ EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset: 250 ## =&gt;
123
+ 250</p>
124
+
125
+ <h2 id="label-Note+that+-22if_unset-22+values+are+used+as-is-2C+with+no+type+conversion.">Note that “if_unset” values are used as-is, with no type conversion.</h2>
126
+
127
+ <p>## EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset:
128
+ &#39;oof!&#39; ## =&gt; &#39;oof!&#39;</p>
129
+
130
+ <h2 id="label-You+can+also+restrict+the+set+of+allowed+values.">You can also restrict the set of allowed values.</h2>
131
+
132
+ <h2 id="label-28Sometimes+setting+the+type+alone+is+a+bit+too+open-ended.-29">(Sometimes setting the type alone is a bit too open-ended.)</h2>
133
+
134
+ <p>## EnvParser.parse :API_TO_USE, as: :symbol, from_set: %i[internal
135
+ external] EnvParser.parse :SOME_CUSTOM_NETWORK_PORT, as: :integer,
136
+ from_set: (1..65535), if_unset: 80</p>
137
+
138
+ <h2 id="label-And+if+the+value+is+not+allowed...">And if the value is not allowed…</h2>
139
+
140
+ <p>## EnvParser.parse :SOME_NEGATIVE_NUMBER, as: :integer, from_set: (1..5) ##
141
+ =&gt; raises EnvParser::ValueNotAllowed “`</p>
114
142
  <hr>
115
143
 
116
144
  <p>The named <code>:as</code> value is required. Allowed values are:</p>
@@ -132,16 +160,14 @@ the repo docs</a> for the full EnvParser documentation.</p>
132
160
  <h2 id="label-Feature+Roadmap+-2F+Future+Development">Feature Roadmap / Future Development</h2>
133
161
 
134
162
  <p>Additional features/options coming in the future: - An
135
- <code>:if_unset</code> option to more easily set default values. - A
136
- <code>:from_set</code> option to restrict acceptable values to those on a
137
- given list. - An <code>EnvParser.load</code> method that will not only
138
- parse the given value, but will set a constant, easily converting
139
- environment variables into constants in your code. - An
140
- <code>EnvParser.load_all</code> method to shortcut multiple
141
- <code>.load</code> calls. - A means to <strong>optionally</strong> bind
142
- <code>#parse</code>, <code>#load</code>, and <code>#load_all</code> methods
143
- onto <code>ENV</code> itself (not all hashes!). Because <code>ENV.parse
144
- ...</code> reads better than <code>EnvParser.parse ...</code>. - … ?</p>
163
+ <code>EnvParser.load</code> method that will not only parse the given
164
+ value, but will set a constant, easily converting environment variables
165
+ into constants in your code. - An <code>EnvParser.load_all</code> method to
166
+ shortcut multiple <code>.load</code> calls. - A means to
167
+ <strong>optionally</strong> bind <code>#parse</code>, <code>#load</code>,
168
+ and <code>#load_all</code> methods onto <code>ENV</code> itself (not all
169
+ hashes!). Because <code>ENV.parse ...</code> reads better than
170
+ <code>EnvParser.parse ...</code>. - … ?</p>
145
171
 
146
172
  <h2 id="label-Contribution+-2F+Development">Contribution / Development</h2>
147
173
 
@@ -172,7 +198,7 @@ href="https://opensource.org/licenses/MIT">MIT License</a>.</p>
172
198
  </div></div>
173
199
 
174
200
  <div id="footer">
175
- Generated on Wed Nov 29 06:44:05 2017 by
201
+ Generated on Wed Nov 29 18:34:06 2017 by
176
202
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
177
203
  0.9.11 (ruby-2.4.2).
178
204
  </div>
data/docs/index.html CHANGED
@@ -110,7 +110,35 @@ simple.</p>
110
110
 
111
111
  <h2 id="label-28i.e.+passing+in+ENV-5B-27X-27-5D+is+equivalent+to+passing+in+-3AX-29">(i.e. passing in <code>ENV['X']</code> is equivalent to passing in <code>:X</code>)</h2>
112
112
 
113
- <p>## timeout_ms = EnvParser.parse :TIMEOUT_MS, as: :integer “`</p>
113
+ <p>## timeout_ms = EnvParser.parse :TIMEOUT_MS, as: :integer</p>
114
+
115
+ <h2 id="label-If+the+ENV+variable+you+want+is+unset+-28nil-29+or+blank+-28-27-27-29-2C">If the ENV variable you want is unset (<code>nil</code>) or blank (<code>&#39;&#39;</code>),</h2>
116
+
117
+ <h2 id="label-the+return+value+is+a+sensible+default+for+the+given+-22as-22+type.">the return value is a sensible default for the given “as” type.</h2>
118
+
119
+ <h2 id="label-Sometimes+you+want+a+non-trivial+default+-28not+just+0-2C+-27-27-2C+etc-29-2C+however.">Sometimes you want a non-trivial default (not just 0, &#39;&#39;, etc), however.</h2>
120
+
121
+ <p>## EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer ## =&gt; 0
122
+ EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset: 250 ## =&gt;
123
+ 250</p>
124
+
125
+ <h2 id="label-Note+that+-22if_unset-22+values+are+used+as-is-2C+with+no+type+conversion.">Note that “if_unset” values are used as-is, with no type conversion.</h2>
126
+
127
+ <p>## EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset:
128
+ &#39;oof!&#39; ## =&gt; &#39;oof!&#39;</p>
129
+
130
+ <h2 id="label-You+can+also+restrict+the+set+of+allowed+values.">You can also restrict the set of allowed values.</h2>
131
+
132
+ <h2 id="label-28Sometimes+setting+the+type+alone+is+a+bit+too+open-ended.-29">(Sometimes setting the type alone is a bit too open-ended.)</h2>
133
+
134
+ <p>## EnvParser.parse :API_TO_USE, as: :symbol, from_set: %i[internal
135
+ external] EnvParser.parse :SOME_CUSTOM_NETWORK_PORT, as: :integer,
136
+ from_set: (1..65535), if_unset: 80</p>
137
+
138
+ <h2 id="label-And+if+the+value+is+not+allowed...">And if the value is not allowed…</h2>
139
+
140
+ <p>## EnvParser.parse :SOME_NEGATIVE_NUMBER, as: :integer, from_set: (1..5) ##
141
+ =&gt; raises EnvParser::ValueNotAllowed “`</p>
114
142
  <hr>
115
143
 
116
144
  <p>The named <code>:as</code> value is required. Allowed values are:</p>
@@ -132,16 +160,14 @@ the repo docs</a> for the full EnvParser documentation.</p>
132
160
  <h2 id="label-Feature+Roadmap+-2F+Future+Development">Feature Roadmap / Future Development</h2>
133
161
 
134
162
  <p>Additional features/options coming in the future: - An
135
- <code>:if_unset</code> option to more easily set default values. - A
136
- <code>:from_set</code> option to restrict acceptable values to those on a
137
- given list. - An <code>EnvParser.load</code> method that will not only
138
- parse the given value, but will set a constant, easily converting
139
- environment variables into constants in your code. - An
140
- <code>EnvParser.load_all</code> method to shortcut multiple
141
- <code>.load</code> calls. - A means to <strong>optionally</strong> bind
142
- <code>#parse</code>, <code>#load</code>, and <code>#load_all</code> methods
143
- onto <code>ENV</code> itself (not all hashes!). Because <code>ENV.parse
144
- ...</code> reads better than <code>EnvParser.parse ...</code>. - … ?</p>
163
+ <code>EnvParser.load</code> method that will not only parse the given
164
+ value, but will set a constant, easily converting environment variables
165
+ into constants in your code. - An <code>EnvParser.load_all</code> method to
166
+ shortcut multiple <code>.load</code> calls. - A means to
167
+ <strong>optionally</strong> bind <code>#parse</code>, <code>#load</code>,
168
+ and <code>#load_all</code> methods onto <code>ENV</code> itself (not all
169
+ hashes!). Because <code>ENV.parse ...</code> reads better than
170
+ <code>EnvParser.parse ...</code>. - … ?</p>
145
171
 
146
172
  <h2 id="label-Contribution+-2F+Development">Contribution / Development</h2>
147
173
 
@@ -172,7 +198,7 @@ href="https://opensource.org/licenses/MIT">MIT License</a>.</p>
172
198
  </div></div>
173
199
 
174
200
  <div id="footer">
175
- Generated on Wed Nov 29 06:44:05 2017 by
201
+ Generated on Wed Nov 29 18:34:06 2017 by
176
202
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
177
203
  0.9.11 (ruby-2.4.2).
178
204
  </div>
@@ -100,7 +100,7 @@
100
100
  </div>
101
101
 
102
102
  <div id="footer">
103
- Generated on Wed Nov 29 06:44:05 2017 by
103
+ Generated on Wed Nov 29 18:34:06 2017 by
104
104
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
105
105
  0.9.11 (ruby-2.4.2).
106
106
  </div>
data/env_parser.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'bundler', '~> 1.16'
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'rspec', '~> 3.0'
26
+ spec.add_development_dependency 'rspec_junit_formatter'
26
27
 
27
28
  spec.add_dependency 'activesupport', '>= 5.0.0'
28
29
  end
@@ -1,3 +1,3 @@
1
1
  class EnvParser
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
data/lib/env_parser.rb CHANGED
@@ -4,6 +4,11 @@ require 'active_support/all'
4
4
  ## The EnvParser class simplifies parsing of environment variables as different data types.
5
5
  ##
6
6
  class EnvParser
7
+ ## Exception class used to indicate parsed values not allowed per a "from_set" option.
8
+ ##
9
+ class ValueNotAllowed < StandardError
10
+ end
11
+
7
12
  class << self
8
13
  ## Interprets the given value as the specified type.
9
14
  ##
@@ -24,32 +29,49 @@ class EnvParser
24
29
  ## - `:array`
25
30
  ## - `:hash`
26
31
  ##
32
+ ## If no "as" option is given (or the "as" value given is not on the above list), an
33
+ ## ArgumentError exception is raised.
34
+ ##
27
35
  ## @option options if_unset
28
- ## Specifies the default value to return if the given "value" is either nil or an empty String
29
- ## (''). Any "if_unset" value given will be returned as-is, with no type conversion or other
30
- ## change having been made. If unspecified, the "default" value for nil/'' input will depend
31
- ## on the "as" type.
36
+ ## Specifies the default value to return if the given "value" is either unset (`nil`) or blank
37
+ ## (`''`). Any "if_unset" value given will be returned as-is, with no type conversion or other
38
+ ## change having been made. If unspecified, the "default" value for `nil`/`''` input will
39
+ ## depend on the "as" type.
40
+ ##
41
+ ## @option options from_set [Array, Range]
42
+ ## Gives a limited set of allowed values (after type conversion). If, after parsing, the final
43
+ ## value is not included in the "from_set" list/range, an EnvParser::ValueNotAllowed exception
44
+ ## is raised.
45
+ ##
46
+ ## Note that if the "if_unset" option is given and the value to parse is `nil`/`''`, the
47
+ ## "if_unset" value will be returned, even if it is not part of the "from_set" list/range.
48
+ ##
49
+ ## Also note that, due to the nature of the lookup, the "from_set" option is only available
50
+ ## for scalar values (i.e. not arrays, hashes, or other enumerables). An attempt to use the
51
+ ## "from_set" option with a non-scalar value will raise an ArgumentError exception.
52
+ ##
53
+ ## @raise [ArgumentError, EnvParser::ValueNotAllowed]
32
54
  ##
33
55
  def parse(value, options = {})
34
- value = if value.is_a? Symbol
35
- ENV[value.to_s]
36
- else
37
- value.to_s
38
- end
56
+ value = ENV[value.to_s] if value.is_a? Symbol
57
+ value = value.to_s
39
58
 
40
59
  return options[:if_unset] if value.blank? && options.key?(:if_unset)
41
60
 
42
- case options[:as].to_sym
43
- when :string then parse_string(value)
44
- when :symbol then parse_symbol(value)
45
- when :boolean then parse_boolean(value)
46
- when :int, :integer then parse_integer(value)
47
- when :float, :decimal, :number then parse_float(value)
48
- when :json then parse_json(value)
49
- when :array then parse_array(value)
50
- when :hash then parse_hash(value)
51
- else raise ArgumentError, "invalid `as` parameter: #{options[:as].inspect}"
52
- end
61
+ value = case options[:as].to_sym
62
+ when :string then parse_string(value)
63
+ when :symbol then parse_symbol(value)
64
+ when :boolean then parse_boolean(value)
65
+ when :int, :integer then parse_integer(value)
66
+ when :float, :decimal, :number then parse_float(value)
67
+ when :json then parse_json(value)
68
+ when :array then parse_array(value)
69
+ when :hash then parse_hash(value)
70
+ else raise ArgumentError, "invalid `as` parameter: #{options[:as].inspect}"
71
+ end
72
+
73
+ check_for_set_inclusion(value, set: options[:from_set]) if options.key?(:from_set)
74
+ value
53
75
  end
54
76
 
55
77
  private
@@ -103,5 +125,17 @@ class EnvParser
103
125
 
104
126
  decoded_json
105
127
  end
128
+
129
+ def check_for_set_inclusion(value, set: nil)
130
+ if value.respond_to?(:each)
131
+ raise ArgumentError, "`from_set` option is not compatible with #{value.class} values"
132
+ end
133
+
134
+ unless set.is_a?(Array) || set.is_a?(Range)
135
+ raise ArgumentError, "invalid `from_set` parameter type: #{set.class}"
136
+ end
137
+
138
+ raise ValueNotAllowed, 'parsed value not in allowed list/range' unless set.include?(value)
139
+ end
106
140
  end
107
141
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: env_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nestor Custodio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-29 00:00:00.000000000 Z
11
+ date: 2017-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec_junit_formatter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: activesupport
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -73,13 +87,13 @@ executables: []
73
87
  extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
90
+ - ".circleci/config.yml"
76
91
  - ".gitignore"
77
92
  - ".rspec"
78
93
  - ".rubocop.yml"
79
94
  - ".ruby-version"
80
95
  - ".travis.yml"
81
96
  - ".yardopts"
82
- - CODE_OF_CONDUCT.md
83
97
  - Gemfile
84
98
  - Gemfile.lock
85
99
  - LICENSE.txt
@@ -88,6 +102,7 @@ files:
88
102
  - bin/console
89
103
  - bin/setup
90
104
  - docs/EnvParser.html
105
+ - docs/EnvParser/ValueNotAllowed.html
91
106
  - docs/_index.html
92
107
  - docs/class_list.html
93
108
  - docs/css/common.css
data/CODE_OF_CONDUCT.md DELETED
@@ -1,74 +0,0 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
11
-
12
- ## Our Standards
13
-
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
16
-
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
22
-
23
- Examples of unacceptable behavior by participants include:
24
-
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
28
- * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
31
- * Other conduct which could reasonably be considered inappropriate in a
32
- professional setting
33
-
34
- ## Our Responsibilities
35
-
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
39
-
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
45
-
46
- ## Scope
47
-
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
54
-
55
- ## Enforcement
56
-
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at sakimorix@gmail.com. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
63
-
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
67
-
68
- ## Attribution
69
-
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
72
-
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/