lazy_names 0.1.1 → 0.2.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
- SHA256:
3
- metadata.gz: 2f594a6fa241dd756a103b41fe2a92eadfb43b0089146ae1f4499d89525a474c
4
- data.tar.gz: f17a91f20eb4d7d044f682c15a1644d7da450a92b96f9902702df073ef73418b
2
+ SHA1:
3
+ metadata.gz: 7d0986ae45e667f52744c72afa5c79ed9adadd84
4
+ data.tar.gz: bfce318aab2ff6de0cf1a2147dc334011d03bab0
5
5
  SHA512:
6
- metadata.gz: 110cf094aaf3b4e2b726813e6c5ffb99901b020198cfa2a23bf9688661d5d5c92c561d0e37a06d453046bb64fa326c9fbe084cdfca4c4e624e792e6aa6c72295
7
- data.tar.gz: 8de69d4970c6e4e2370be4803e66b0881f05df8204b0e8eb5142783877fa6e64d15ed042b57afb59329e3fddf6c7b21519a1e0486cc7b55570566f96e5d5567d
6
+ metadata.gz: cfc61aaa924dbd3c67221000f7d38ac0445cc43fe8b14a3c16e9d8ea70dd5b40d95553d98e38777b5212ec7765c40d0155051dfc594347f8132f2f76091c2840
7
+ data.tar.gz: 5002c013d4d4537aeb12addace4a0c77001a655ca888e835e6344b0f5f1a5d1c946d122f333a7638cf5381d426b487f4031ee3fb8ba5948d2b182690970ac569
@@ -0,0 +1,3 @@
1
+ ---
2
+ definitions:
3
+ 'Models::Users::CreditCard': 'MUCC'
data/Gemfile.lock CHANGED
@@ -1,14 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lazy_names (0.0.1)
4
+ lazy_names (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  coderay (1.1.3)
10
10
  diff-lcs (1.3)
11
- fakefs (1.2.1)
12
11
  method_source (1.0.0)
13
12
  pry (0.13.1)
14
13
  coderay (~> 1.1)
@@ -33,7 +32,6 @@ PLATFORMS
33
32
 
34
33
  DEPENDENCIES
35
34
  bundler (~> 1.16)
36
- fakefs (~> 1.2)
37
35
  lazy_names!
38
36
  pry (~> 0.13)
39
37
  rake (~> 10.0)
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # lazy_names
2
2
 
3
- LazyNames helps programmer to type faster very-long classes names, constants by defining them on a shorter version.
4
- If you are lazy like me typing many times a day in console long constant then this gem will ease your development process.
3
+ LazyNames helps programmer to type faster very-long class names, constants by defining them on a shorter version.
4
+ If you are lazy like me typing many times a day in console long constants then this gem will ease your development process.
5
5
 
6
6
  ## Why
7
7
 
@@ -54,6 +54,9 @@ $ bundle exec rails c # or bin/console
54
54
  ```
55
55
 
56
56
  ## Configuration
57
+
58
+ ### Global definition
59
+
57
60
  Take a look onto `lazy_names.tt.yml` it has very basic template for you to start.
58
61
 
59
62
  ```yml
@@ -69,14 +72,14 @@ So consider this example:
69
72
  $ pwd
70
73
  /Users/name/my_awesome_project
71
74
  ```
72
- The last folder name of you ruby project must match the same one in your configuration.
73
- After **definitions** sections you can actually redefine your long constants.
74
- So in this example `Models::Users::CreditCard` is your real project constant and
75
- `MUCC` will be your short variant of it, so you can access `Models::Users::CreditCard`
76
- from `MUCC`. `MUCC` and any other right hand side can be any value, you define the best-suitable names.
77
-
78
- You can define as many constants as you want. The same rule applies for projects.
79
- Your config can have multiple constant definitions per namespace.
75
+ The last folder name of you ruby project must match the same one in your configuration.
76
+ After **definitions** sections you can actually redefine your long constants.
77
+ So in this example `Models::Users::CreditCard` is your real project constant and
78
+ `MUCC` will be your short variant of it, so you can access `Models::Users::CreditCard`
79
+ from `MUCC`. `MUCC` and any other right hand side can be any value, you define the best-suitable names.
80
+
81
+ You can define as many constants as you want. The same rule applies for projects.
82
+ Your config can have multiple constant definitions per namespace.
80
83
  ```yml
81
84
  ---
82
85
  my_awesome_project:
@@ -87,9 +90,22 @@ my_another_project:
87
90
  'OtherLongConst': 'Short'
88
91
  ```
89
92
 
90
- However you can put your `.lazy_names.yml` config directly to project folder, it will be looked up firstly from project.
91
- Just do not forget to put in your `.gitignore`. I believe every developer defines shorter versions of constants by his own opinion.
92
- If project folder doesn't contain any `.lazy_names.yml`, it will fallback to home directory.
93
+ ### Project definitions
94
+
95
+ In the meantime you can put your `.lazy_names.yml` config directly to project folder, it will be looked up firstly from project.
96
+ Just do not forget to put in your `.gitignore`. I believe every developer defines shorter versions of constants by his own opinion.
97
+ ```sh
98
+ echo '.lazy_names.yml' >> .gitignore
99
+ ```
100
+ If project folder doesn't contain any `.lazy_names.yml`, it will fallback to home directory.
101
+
102
+ Configuration per project a bit different: you don't need to specify global scope `my_awesome_project`, you can skip forward to definitions
103
+ ```yml
104
+ ---
105
+ definitions:
106
+ 'Models::Users::CreditCard: 'MUCC'
107
+ ```
108
+ Example config can be found in `.lazy_names.tt.project.yml`
93
109
 
94
110
  ## Development
95
111
 
@@ -5,6 +5,7 @@ module LazyNames
5
5
  class NoConfig < StandardError; end
6
6
  class ConfigNotResolved < StandardError; end
7
7
  class NamespaceNotFound < StandardError; end
8
+ class NoDefinitions < StandardError; end
8
9
 
9
10
  class << self
10
11
  BasicConfig = Struct.new(:path, :definitions)
@@ -13,7 +14,7 @@ module LazyNames
13
14
  def call(namespace:, path: nil)
14
15
  return read_from_path(namespace, path) if path
15
16
 
16
- config = read_from_project(namespace)
17
+ config = read_from_project if config_in_project_path?
17
18
  config ||= read_from_home_dir(namespace)
18
19
 
19
20
  config
@@ -38,19 +39,33 @@ module LazyNames
38
39
  'Create ~/.lazy_names.yml'
39
40
  end
40
41
 
41
- def read_from_project(namespace)
42
- return false unless config_in_project_path?
43
-
44
- definitions = find_definitions(project_path, namespace)
42
+ def read_from_project
43
+ definitions = find_project_definitions
45
44
 
46
45
  BasicConfig.new(project_path, definitions)
47
46
  end
48
47
 
48
+ def find_project_definitions
49
+ read_config(project_path)['definitions'].to_hash
50
+
51
+ rescue NoMethodError
52
+ raise NoDefinitions, "No definitions found in #{project_path}. " \
53
+ 'See config example .lazy_names.tt.project.yml'
54
+ end
55
+
49
56
  def find_definitions(path, namespace)
50
- read_config(path)[namespace]['definitions'].to_h
57
+ find_namespace_contents(path, namespace)['definitions'].to_hash
58
+
59
+ rescue NoMethodError
60
+ raise NoDefinitions, "No definitions found in #{path}. " \
61
+ 'See config example in .lazy_names.tt.yml'
62
+ end
51
63
 
64
+ def find_namespace_contents(path, namespace)
65
+ read_config(path)[namespace].to_hash
52
66
  rescue NoMethodError
53
- raise NamespaceNotFound
67
+ raise NamespaceNotFound, "No namespace found in #{path}. " \
68
+ 'See config example in .lazy_names.tt.yml and check README'
54
69
  end
55
70
 
56
71
  def config_in_project_path?
@@ -1,3 +1,3 @@
1
1
  module LazyNames
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazy_names
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zhisme
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-30 00:00:00.000000000 Z
11
+ date: 2024-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,6 +76,7 @@ extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
78
  - ".gitignore"
79
+ - ".lazy_names.tt.project.yml"
79
80
  - ".lazy_names.tt.yml"
80
81
  - ".rspec"
81
82
  - ".rubocop.yml"
@@ -116,7 +117,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  - !ruby/object:Gem::Version
117
118
  version: '0'
118
119
  requirements: []
119
- rubygems_version: 3.0.3
120
+ rubyforge_project:
121
+ rubygems_version: 2.5.2
120
122
  signing_key:
121
123
  specification_version: 4
122
124
  summary: Define short constants to frequently used classes/constants