hemera 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +54 -1
- data/hemera.gemspec +1 -1
- data/lib/hemera/source/meta/image/image_generator.rb +88 -0
- data/lib/hemera/source/meta/image/template/image.h.erb +18 -0
- data/lib/hemera/source/meta/image/template/image.m.erb +28 -0
- data/lib/hemera/source/meta.rb +1 -1
- data/lib/hemera/version.rb +1 -1
- metadata +11 -3
- data/lib/hemera/source/meta/image/image.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f672cbb8d185ddc997c9ae2be5147abbceb5fb57995e03212741902ca703606f
|
4
|
+
data.tar.gz: 1328988b2462e8376f74e877c8579aa85efe33ab4684da8e9222cab334b4e080
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 002f1b2303b4010c399b06ada618f07f6d77bab8e2a1ddad5f6efd6aa93d0992f60068995bd52e868ea5604a6cf9ef00f00d24afb894091faa2404b13df1fb9a
|
7
|
+
data.tar.gz: f9594ca651300bbe80e2fb0a5f2193caabf93ddd01477d26bed0002b5769539ba03622fc742b1ba15401704171b7c7d4724e22d1ce49026b120242186a1e750c
|
data/README.md
CHANGED
@@ -12,10 +12,63 @@ gem install Hemera
|
|
12
12
|
|
13
13
|
## Usage
|
14
14
|
|
15
|
+
use help to see details
|
16
|
+
|
17
|
+
```
|
18
|
+
hm help
|
19
|
+
|
20
|
+
NAME
|
21
|
+
hm - Hemera, a command line tool for development
|
22
|
+
|
23
|
+
SYNOPSIS
|
24
|
+
hm [global options] command [command options] [arguments...]
|
25
|
+
|
26
|
+
VERSION
|
27
|
+
0.1.1
|
28
|
+
|
29
|
+
GLOBAL OPTIONS
|
30
|
+
--help - Show this message
|
31
|
+
--version - Display the program version
|
32
|
+
|
33
|
+
COMMANDS
|
34
|
+
help - Shows a list of commands or help for one command
|
35
|
+
meta, m - metaprogramming
|
36
|
+
pod, p - cocoapods
|
37
|
+
xcode, x - Xcode
|
38
|
+
```
|
39
|
+
use meta to generate code in future, not support for the time being.
|
40
|
+
```
|
41
|
+
hm meta
|
42
|
+
|
43
|
+
NAME
|
44
|
+
meta - metaprogramming
|
45
|
+
|
46
|
+
SYNOPSIS
|
47
|
+
hm [global options] meta img
|
48
|
+
|
49
|
+
COMMANDS
|
50
|
+
img, i - generate img code
|
51
|
+
```
|
52
|
+
|
53
|
+
use xcode subcommand can open/clean workspace
|
54
|
+
|
15
55
|
```
|
16
|
-
#
|
56
|
+
# Clean DerivedData, support custom path
|
57
|
+
hm xcode clean # also hm x c
|
58
|
+
|
59
|
+
# Open Xcode Workspace, support xcodeproj and xcworkspace
|
60
|
+
hm xcode open # also hm x o
|
17
61
|
```
|
18
62
|
|
63
|
+
use pod can create/install with cocoapods
|
64
|
+
|
65
|
+
```
|
66
|
+
# create a pod
|
67
|
+
hm pod create YourPodsName # also hm p c YourPodsName
|
68
|
+
|
69
|
+
# force install podfile when pod install error
|
70
|
+
hm pod install # also hm p i
|
71
|
+
```
|
19
72
|
|
20
73
|
## License
|
21
74
|
|
data/hemera.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.require_paths = ['lib']
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
25
|
-
spec.add_development_dependency 'cocoapods', '~> 1.5.0'
|
25
|
+
spec.add_development_dependency 'cocoapods', '~> 1.5', '>= 1.5.0'
|
26
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
27
27
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
28
28
|
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'pathname'
|
3
|
+
module Hemera
|
4
|
+
module Generator
|
5
|
+
class ImageModel
|
6
|
+
attr_reader :name
|
7
|
+
attr_reader :name_light
|
8
|
+
attr_reader :name_dark
|
9
|
+
def initialize(name, name_light, name_dark)
|
10
|
+
@name = name
|
11
|
+
@name_light = name_light
|
12
|
+
@name_dark = name_dark
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_s
|
16
|
+
@name + "\t" + @name_light + "\t" + @name_dark
|
17
|
+
end
|
18
|
+
end
|
19
|
+
class ImageGenerator
|
20
|
+
def initialize(output_file_name, path)
|
21
|
+
@class_name = output_file_name
|
22
|
+
@path = path
|
23
|
+
@images = image_model_of_names
|
24
|
+
end
|
25
|
+
|
26
|
+
def find_paths_of_png(path = @path)
|
27
|
+
Dir.glob(path + '/**/*.png')
|
28
|
+
end
|
29
|
+
|
30
|
+
def names_of_image_paths(paths = find_paths_of_png)
|
31
|
+
paths.map do |path|
|
32
|
+
path.split('/').last[0..-('.png'.length + 1)].split('@').first
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def image_model_of_names(names = names_of_image_paths)
|
37
|
+
lights = []
|
38
|
+
darks = []
|
39
|
+
names.each do |name|
|
40
|
+
if name =~ /^night_(.*)/
|
41
|
+
darks << name.gsub('night_', '')
|
42
|
+
else
|
43
|
+
lights << name
|
44
|
+
end
|
45
|
+
end
|
46
|
+
lights.uniq.map do |name|
|
47
|
+
field_name = name.gsub(/[\s.-]/, '_')
|
48
|
+
light = name
|
49
|
+
dark = darks.include?(name) ? 'night_' + name : name
|
50
|
+
ImageModel.new(field_name, light, dark)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def interface_file
|
55
|
+
ERB.new(File.read(File.expand_path('template/image.h.erb', __dir__))).result(binding)
|
56
|
+
end
|
57
|
+
|
58
|
+
def implementent_file
|
59
|
+
ERB.new(File.read(File.expand_path('template/image.m.erb', __dir__))).result(binding)
|
60
|
+
end
|
61
|
+
|
62
|
+
def generate # (is_swift)
|
63
|
+
# if is_swift
|
64
|
+
# puts is_swift
|
65
|
+
# else
|
66
|
+
# end
|
67
|
+
|
68
|
+
puts 'generating 😊'
|
69
|
+
|
70
|
+
interface_file_path = @path + '/' + @class_name + '.h'
|
71
|
+
implementent_file_path = @path + '/' + @class_name + '.m'
|
72
|
+
|
73
|
+
File.open(interface_file_path, 'w') do |f|
|
74
|
+
f.puts interface_file
|
75
|
+
end
|
76
|
+
|
77
|
+
File.open(implementent_file_path, 'w') do |f|
|
78
|
+
f.puts implementent_file
|
79
|
+
end
|
80
|
+
|
81
|
+
puts 'generating done! 🎉'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
/**
|
2
|
+
* generate from Hemera
|
3
|
+
* https://github.com/JianweiWangs/Hemera.git
|
4
|
+
* JianweiWangs
|
5
|
+
* <%=@class_name%>.h
|
6
|
+
*/
|
7
|
+
|
8
|
+
#import <UIKit/UIKit.h>
|
9
|
+
|
10
|
+
@interface <%=@class_name%> : NSObject
|
11
|
+
|
12
|
+
@property (nonatomic, readonly) UIImage *light;
|
13
|
+
|
14
|
+
@property (nonatomic, readonly) UIImage *dark;
|
15
|
+
<% for @image in @images %>
|
16
|
+
<%= "@property (class, nonatomic, readonly) #{@class_name} *#{@image.name};" %>
|
17
|
+
<% end %>
|
18
|
+
@end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/**
|
2
|
+
* generate from Hemera
|
3
|
+
* https://github.com/JianweiWangs/Hemera.git
|
4
|
+
* JianweiWangs
|
5
|
+
* <%=@class_name%>.h
|
6
|
+
*/
|
7
|
+
|
8
|
+
<%= "#import \"#{@class_name}.h\"" %>
|
9
|
+
|
10
|
+
<%= "@interface #{@class_name} ()" %>
|
11
|
+
|
12
|
+
@property (nonatomic, readwrite) UIImage *light;
|
13
|
+
|
14
|
+
@property (nonatomic, readwrite) UIImage *dark;
|
15
|
+
|
16
|
+
@end
|
17
|
+
|
18
|
+
<%= "@implementation #{@class_name}" %>
|
19
|
+
<% for @image in @images %>
|
20
|
+
<%= "+ (#{@class_name} *)#{@image.name} {"%>
|
21
|
+
<%= "\t#{@class_name} *model = [#{@class_name} new];" %>
|
22
|
+
<%= "\tmodel.light = [UIImage imageNamed:@\"#{@image.name_light}\"];" %>
|
23
|
+
<%= "\tmodel.dark = [UIImage imageNamed:@\"#{@image.name_dark}\"];" %>
|
24
|
+
<%= "\treturn model;" %>
|
25
|
+
<%= "}" %>
|
26
|
+
<% end %>
|
27
|
+
@end
|
28
|
+
|
data/lib/hemera/source/meta.rb
CHANGED
data/lib/hemera/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hemera
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JianweiWangs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -29,6 +29,9 @@ dependencies:
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
- - ">="
|
32
35
|
- !ruby/object:Gem::Version
|
33
36
|
version: 1.5.0
|
34
37
|
type: :development
|
@@ -36,6 +39,9 @@ dependencies:
|
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
41
|
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '1.5'
|
44
|
+
- - ">="
|
39
45
|
- !ruby/object:Gem::Version
|
40
46
|
version: 1.5.0
|
41
47
|
- !ruby/object:Gem::Dependency
|
@@ -104,9 +110,11 @@ files:
|
|
104
110
|
- lib/hemera/command/pod.rb
|
105
111
|
- lib/hemera/command/xcode.rb
|
106
112
|
- lib/hemera/source/meta.rb
|
107
|
-
- lib/hemera/source/meta/image/
|
113
|
+
- lib/hemera/source/meta/image/image_generator.rb
|
108
114
|
- lib/hemera/source/meta/image/objc.rb
|
109
115
|
- lib/hemera/source/meta/image/swift.rb
|
116
|
+
- lib/hemera/source/meta/image/template/image.h.erb
|
117
|
+
- lib/hemera/source/meta/image/template/image.m.erb
|
110
118
|
- lib/hemera/source/pod.rb
|
111
119
|
- lib/hemera/source/xcode.rb
|
112
120
|
- lib/hemera/tool/log.rb
|
@@ -1,24 +0,0 @@
|
|
1
|
-
|
2
|
-
module Hemera
|
3
|
-
module Generator
|
4
|
-
class ImageGenerator
|
5
|
-
# attr_reader :output_file_name
|
6
|
-
|
7
|
-
def initialize(output_file_name, path)
|
8
|
-
@output_file_name = output_file_name
|
9
|
-
@path = path
|
10
|
-
end
|
11
|
-
|
12
|
-
def generate(is_swift)
|
13
|
-
if is_swift
|
14
|
-
puts is_swift
|
15
|
-
else
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
|