sanctuary-planter 0.1.2 → 0.1.3

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
  SHA256:
3
- metadata.gz: 5a4b4140ea657d042a36643f4a11c7ba4da0ae9424ca65600ccab0322e70ff4a
4
- data.tar.gz: 579757cd5303da281db0a6018a4e5b69fc8352d3c8e64d2c114547988eb3b347
3
+ metadata.gz: 227730cb03cbabaa8095a3eed4d75491de5bacb39d252dbcffd09dc144bc52bc
4
+ data.tar.gz: fb61c821b94bb9467e435ade8aa83ec23e259dd42459f292e97028b256472864
5
5
  SHA512:
6
- metadata.gz: 9b98198e9a0a16f73ab7fed6da249dc50065d9a1cf57942c7259020b300c9fccc71d3735479caaaac42ab9b8b8f44ff4b5f34f361703dfdaf84573cad6357837
7
- data.tar.gz: e752a60d1096b8da0a4ae565c87345b3683a7094fc5a5e11f575753f2ee04fa8c172c6334f7e3a0176c7c510092fc2af2448342445e6770d215d909f9e375ea4
6
+ metadata.gz: d74f9290c917e3315bb365034d3f6a4f1ec36d99f0ced8fee83abe8171d9fcaeccb4aa20dc286107b862ce1766598a5d2df2c32f07ea2111a4bc7fb1d1f37cd5
7
+ data.tar.gz: 6ed2984b10433b65b6c6237ac59f1a24b4319ab5039211b2ca11e9c3809e1a3b6a09b22f0238ec4dba45ab9e2de736b39bac46e6427ca51ec96d05125b75adf6
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sanctuary-planter (0.1.1)
4
+ sanctuary-planter (0.1.2)
5
5
  sanctuary (~> 0.1.6)
6
6
 
7
7
  GEM
@@ -1,20 +1,25 @@
1
1
  require "sanctuary"
2
+ require "sanctuary/planter/parser"
3
+ require "sanctuary/planter/generator"
2
4
 
3
5
  module Sanctuary
4
6
  module Planter
5
7
  class CLI
6
8
  def self.start
7
9
  if ARGV.include?("-i")
8
- File.open(ARGV[1]) do |f|
9
- f.each_line do |line|
10
- if line[1..4] == "TYPE"
11
- puts "generating #{line.split("TYPE:").last.split(" ")[0]} as #{line.split("NAME:").last}"
12
- Sanctuary::Generator.start([line.split("TYPE:")[1].split(" ")[0].lstrip.chomp, line.split("NAME:").last.chomp])
13
- end
14
- end
15
- end
10
+ classes_array = Sanctuary::Planter::Parser.parse_plant_uml(ARGV[1])
11
+ plant_array = Sanctuary::Planter::Parser.generate_plant_data_objects(classes_array)
12
+ plant_array.each do |plant|
13
+ Sanctuary::Planter::Generator.generate_file_from_plant(plant)
14
+ end
16
15
  else
17
- puts "NO SUCH INPUT"
16
+ system("vim", "tmp.puml")
17
+ classes_array = Sanctuary::Planter::Parser.parse_plant_uml("./tmp.puml")
18
+ plant_array = Sanctuary::Planter::Parser.generate_plant_data_objects(classes_array)
19
+ plant_array.each do |plant|
20
+ Sanctuary::Planter::Generator.generate_file_from_plant(plant)
21
+ end
22
+ File.delete("./tmp.puml") if File.exists? ("./tmp.puml")
18
23
  end
19
24
  end
20
25
  end
@@ -0,0 +1,21 @@
1
+ require "sanctuary"
2
+
3
+ module Sanctuary
4
+ module Planter
5
+ module Generator
6
+ def self.generate_file_from_plant(plant)
7
+ home_dir = Sanctuary::HOME_DIR
8
+ template_file = IO.read(home_dir + "/" + plant.plant_template)
9
+ template = ERB.new(template_file, nil, '-%<>')
10
+ local_binding = binding
11
+ local_binding.local_variable_set(:name, plant.name)
12
+ local_binding.local_variable_set(:fields, plant.fields)
13
+ local_binding.local_variable_set(:methods, plant.methods)
14
+ puts "Generated #{plant.name}"
15
+ File.open(plant.name + "." + plant.plant_template.split("/").last.split(".")[1], "w") do |f|
16
+ f.write(template.result(local_binding))
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,48 @@
1
+ require "sanctuary/planter/plant"
2
+
3
+ module Sanctuary
4
+ module Planter
5
+ module Parser
6
+ def self.parse_plant_uml(path)
7
+ classes = []
8
+ File.open(path) do |file|
9
+ reading = false
10
+ lines_read = ""
11
+ file.each do |line|
12
+ if line.include?("TYPE")
13
+ reading = true
14
+ end
15
+ if reading
16
+ lines_read << line
17
+ end
18
+ if line.include?("}")
19
+ reading = false
20
+ classes << lines_read.split("\n")
21
+ lines_read = ""
22
+ end
23
+ end
24
+ end
25
+
26
+ classes
27
+ end
28
+
29
+ def self.generate_plant_data_objects(classes_array)
30
+ classes_array.map do |klass|
31
+ fields = []
32
+ methods = []
33
+ plant_template = klass[0].split(":")[1].chomp
34
+ name = klass[1].split("class")[1].split(" ")[0].chomp
35
+ klass[2..(klass.length - 2)].each do |line|
36
+ if line.include?("()")
37
+ methods << line.strip
38
+ else
39
+ fields << line.strip
40
+ end
41
+ end
42
+
43
+ Sanctuary::Planter::Plant.new(name, fields, methods, plant_template)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,13 @@
1
+ module Sanctuary
2
+ module Planter
3
+ class Plant
4
+ attr_accessor :name, :fields, :methods, :plant_template
5
+ def initialize(name, fields, methods, plant_template)
6
+ @name = name
7
+ @fields = fields
8
+ @methods = methods
9
+ @plant_template = plant_template
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module Sanctuary
2
2
  module Planter
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanctuary-planter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin-Kawai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-24 00:00:00.000000000 Z
11
+ date: 2019-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sanctuary
@@ -101,6 +101,9 @@ files:
101
101
  - bin/setup
102
102
  - lib/sanctuary/planter.rb
103
103
  - lib/sanctuary/planter/cli.rb
104
+ - lib/sanctuary/planter/generator.rb
105
+ - lib/sanctuary/planter/parser.rb
106
+ - lib/sanctuary/planter/plant.rb
104
107
  - lib/sanctuary/planter/version.rb
105
108
  - sanctuary-planter.gemspec
106
109
  homepage: https://www.github.com