magicfile 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/magicfile.rb +92 -3
  3. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 121d19f10f54f4438e74de0a6b26a99635b74636
4
- data.tar.gz: 546caa00066ad1a4758a0e479eb9758294576a4a
3
+ metadata.gz: ec222168eabe89ef31639152cb3b96a2df72715b
4
+ data.tar.gz: 607c3b42f32d5d1896239ab68437e8081628039a
5
5
  SHA512:
6
- metadata.gz: 8378e099b42a03819bda08370a7a4caa0a5db7c79750c52d76702980137bdefce980f9d5d3cefe32241987c4249d47c0ffc066111afd0177da15c63be08ba508
7
- data.tar.gz: 2e06cc7b0fee4e413d14ed54e20399dbdd9566dd453a457a05e18dc75d6362ebd743f37102c6c2708c2836b281b214737fb0f33ce1df610bb39a586b9e897649
6
+ metadata.gz: b3fd9e7812ba11363324bcbc7198326b716ee514baebb2798da86af0d9c30a9d9e9992dba99a2d9d67badf6033e6a402e5ca596b68cf44642588714f342c8b53
7
+ data.tar.gz: 1dc136d6c557efcc479f42d06b3d511e11b500756c21bdc7fa72def8ff6f5025abd17a8a49b378b4b22e5f4e93ca411d62702353387dbb4f384dec19fae745b9
data/lib/magicfile.rb CHANGED
@@ -1,5 +1,94 @@
1
+ require 'awesome_print'
2
+ require 'active_support'
3
+ require 'active_support/core_ext/string'
4
+
5
+ class MagicLine
6
+ attr_accessor :content, :space_num
7
+
8
+ def initialize(content='', space_num=0)
9
+ @content = content
10
+ @space_num = space_num
11
+ end
12
+ end
13
+
1
14
  class Magicfile
2
- def self.hi
3
- puts "Hello world!"
15
+
16
+ def initialize(lines=[], current_line_index=-1, current_line_space_num=-2)
17
+ @lines = lines
18
+ @current_line_index = current_line_index
19
+ @current_line_space_num = current_line_space_num
20
+ end
21
+
22
+ def append_class(name, parent_class_name=nil)
23
+
24
+ if parent_class_name
25
+ class_start_line = MagicLine.new("class #{name.camelize} < #{parent_class_name}")
26
+ else
27
+ class_start_line = MagicLine.new("class #{name.camelize}")
28
+ end
29
+
30
+ append_after_current(class_start_line, true, 2)
31
+ append_after_current(MagicLine.new("end"), false, 0)
32
+ end
33
+
34
+ def append_module(name)
35
+ module_start_line = MagicLine.new("module #{name.camelize}")
36
+ module_end_line = MagicLine.new("end")
37
+
38
+ append_after_current(module_start_line, true, 2)
39
+ append_after_current(module_end_line, false, 0)
40
+ end
41
+
42
+ def append_modules(names)
43
+ names.each do |name|
44
+ append_module(name)
45
+ end
46
+ end
47
+
48
+ def append_string_lines(line_contents)
49
+ space_num = @current_line_space_num + 2
50
+ content = line_contents.join("\n" + " " * space_num)
51
+ ap content
52
+ line = MagicLine.new(content, space_num)
53
+ @lines.insert(@current_line_index + 1, line)
54
+ end
55
+
56
+ def append_after_current(line, enable_move_down=true, spaces=2)
57
+
58
+
59
+ line.space_num = @current_line_space_num + spaces
60
+ @lines.insert(@current_line_index + 1, line)
61
+
62
+
63
+ if enable_move_down
64
+ @current_line_space_num = line.space_num
65
+ @current_line_index += 1
66
+ end
67
+
68
+ ap "after start======"
69
+ ap @lines
70
+ ap @current_line_index
71
+ ap @current_line_space_num
72
+ ap "end======"
73
+
74
+ end
75
+
76
+ def to_file(name)
77
+ infos = @lines.map { |line| " " * line.instance_variable_get("@space_num") + line.instance_variable_get("@content") }
78
+ ap infos.join("\n")
79
+ File.open(name, 'w') { |file| file.write(infos.join("\n")) }
80
+ end
81
+
82
+ def display
83
+ @lines.each do |line|
84
+ ap ' ' * line.instance_variable_get("@space_num") + line.instance_variable_get("@content")
85
+ end
4
86
  end
5
- end
87
+
88
+ end
89
+
90
+ a = Magicfile.new
91
+ a.append_modules(['api', 'v1', 'entities'])
92
+ a.append_class('screen', 'Grape::Entity')
93
+ a.append_string_lines(['expose :id', 'expose :name'])
94
+ a.to_file('tmp.txt')
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magicfile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
- - sea
7
+ - seaify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-22 00:00:00.000000000 Z
11
+ date: 2015-08-23 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: des
14
- email: dil
13
+ description: used to create file, modify file, read file information
14
+ email: dilin.life@gmail.com
15
15
  executables:
16
16
  - magicfile
17
17
  extensions: []
@@ -42,6 +42,6 @@ rubyforge_project:
42
42
  rubygems_version: 2.4.7
43
43
  signing_key:
44
44
  specification_version: 4
45
- summary: sum
45
+ summary: used to create file, modify file, read file information
46
46
  test_files: []
47
47
  has_rdoc: