bgem 0.0.1 → 0.0.2

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: ef801888eb05b68d1ce537203de173975db6b7d3
4
- data.tar.gz: 97860e14fc3b2753e7c64686c35c8fd40b295244
3
+ metadata.gz: eac187349299661854ca19def82c05e8abb8100a
4
+ data.tar.gz: 9d227807b5776bba0a66d7a58c20a80bb201055b
5
5
  SHA512:
6
- metadata.gz: 37e16cdfc32ea381bcbcdc45524d367527dceaec50bf22917ad6040a5cab7d950276ae6a63480232e6db71da8514d7c6cdb4506dbeaff17ddb70b01b9eb230df
7
- data.tar.gz: 45007263f18a00b038aab9a7984b8b6c128ef521d83976c605043de856b38179f6e853f2d055e323ee598a6939378fdecbda7447c447f364d97f963e16aaf621
6
+ metadata.gz: 1b9b60f6c13811f3c3c4a9082d694d9003ece5140a16638bb6f3e3629e13580337f7d45ff8851b323b46663fc5d146c2e3a8e1bcf3a1106d4c573644af236d7b
7
+ data.tar.gz: 0de32c5845c033abb8e0d8347674d8c11222ccb4cb9d69eb8587fb1f5d80efd63cb91f590a96aa407ba7e1d9c420ff796ee2b4487d8d566907725702dd9a687f
data/lib/bgem.rb CHANGED
@@ -1,11 +1,74 @@
1
- require 'pathname'
1
+ module Bgem
2
+ require 'pathname'
3
+
4
+ using Module.new {
5
+ refine String do
6
+ def indent number
7
+ lines.map { |line| "#{' '*number}#{line}" }.join
8
+ end
9
+ end
10
+ }
2
11
 
3
- class String
4
- def indent number
5
- lines.map { |line| "#{' '*number}#{line}" }.join
12
+ module CLI
13
+ MAIN_FILE = Dir['src/*.rb'][0]
14
+
15
+ def self.run
16
+ options = parse_argv
17
+ target = TargetFile.new (options[:output] || 'output.rb')
18
+ target.write SourceFile.new(options[:input] || MAIN_FILE).to_s
19
+ end
20
+
21
+ def self.parse_argv
22
+ ARGV.map do |string|
23
+ key, _colon, value = string.partition ':'
24
+ [key.to_sym, value]
25
+ end.to_h
26
+ end
6
27
  end
7
- end
8
28
 
9
- require 'bgem/cli'
10
- require 'bgem/target_file'
11
- require 'bgem/source_file'
29
+ class SourceFile
30
+ INDENT = 2
31
+
32
+ def initialize file, indent: 0
33
+ @file, @indent = (Pathname file), indent
34
+ @source = @file.read
35
+ @constant, @type, _rb = @file.basename.to_s.split '.'
36
+ end
37
+
38
+ def to_s
39
+ "#{@type} #{@constant}\n#{source}end".indent @indent
40
+ end
41
+
42
+ private
43
+ def source
44
+ source = @source.indent INDENT
45
+ source.prepend "#{before}\n\n" unless before.empty?
46
+ source.concat "\n#{after}\n" unless after.empty?
47
+ source
48
+ end
49
+
50
+ def self.concatenate_source_files *symbols
51
+ symbols.each do |symbol|
52
+ define_method symbol do
53
+ pattern = @file.dirname.join "#{__method__}.#{@constant}/*.rb"
54
+ Pathname.glob(pattern).map do |file|
55
+ self.class.new(file, indent: INDENT).to_s
56
+ end.join "\n\n"
57
+ end
58
+ end
59
+ end
60
+
61
+ concatenate_source_files :before, :after
62
+ end
63
+
64
+ class TargetFile
65
+ def initialize path
66
+ @path = Pathname path
67
+ end
68
+
69
+ def write string
70
+ @path.dirname.mkpath
71
+ @path.write string
72
+ end
73
+ end
74
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bgem
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
7
  - Anatoly Chernow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-06 00:00:00.000000000 Z
11
+ date: 2017-01-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -17,21 +17,8 @@ executables:
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - ".gitignore"
21
- - Gemfile
22
- - bgem.gemspec
23
20
  - bin/bgem
24
21
  - lib/bgem.rb
25
- - lib/bgem/cli.rb
26
- - lib/bgem/source_file.rb
27
- - lib/bgem/target_file.rb
28
- - spec/bgem_spec.rb
29
- - spec/helper.rb
30
- - spec/test_src/Main.module.rb
31
- - spec/test_src/after.Main/After.class.rb
32
- - spec/test_src/after.Main/AfterModule.module.rb
33
- - spec/test_src/before.Main/Before.module.rb
34
- - spec/test_src/before.Main/before.Before/Inside.class.rb
35
22
  homepage:
36
23
  licenses: []
37
24
  metadata: {}
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- *.gem
2
- Gemfile.lock
data/Gemfile DELETED
@@ -1,5 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'hobby-devtools'
4
-
5
- gemspec
data/bgem.gemspec DELETED
@@ -1,9 +0,0 @@
1
- Gem::Specification.new do |g|
2
- g.name = 'bgem'
3
- g.files = `git ls-files`.split($/)
4
- g.version = '0.0.1'
5
- g.summary = 'Build gems without too much hassle.'
6
- g.authors = ['Anatoly Chernow']
7
-
8
- g.executables << 'bgem'
9
- end
data/lib/bgem/cli.rb DELETED
@@ -1,18 +0,0 @@
1
- module Bgem
2
- module CLI
3
- MAIN_FILE = Dir['src/*.rb'][0]
4
-
5
- def self.run
6
- options = parse_argv
7
- target = TargetFile.new (options[:output] || 'output.rb')
8
- target.write SourceFile.new(options[:input] || MAIN_FILE).to_s
9
- end
10
-
11
- def self.parse_argv
12
- ARGV.map do |string|
13
- key, _colon, value = string.partition ':'
14
- [key.to_sym, value]
15
- end.to_h
16
- end
17
- end
18
- end
@@ -1,36 +0,0 @@
1
- module Bgem
2
- class SourceFile
3
- INDENT = 2
4
-
5
- def initialize file, indent: 0
6
- @file, @indent = (Pathname file), indent
7
- @source = @file.read
8
- @constant, @type, _rb = @file.basename.to_s.split '.'
9
- end
10
-
11
- def to_s
12
- "#{@type} #{@constant}\n#{source}end".indent @indent
13
- end
14
-
15
- private
16
- def source
17
- source = @source.indent INDENT
18
- source.prepend "#{before}\n\n" unless before.empty?
19
- source.concat "\n#{after}\n" unless after.empty?
20
- source
21
- end
22
-
23
- def self.concatenate_source_files *symbols
24
- symbols.each do |symbol|
25
- define_method symbol do
26
- pattern = @file.dirname.join "#{__method__}.#{@constant}/*.rb"
27
- Pathname.glob(pattern).map do |file|
28
- self.class.new(file, indent: INDENT).to_s
29
- end.join "\n\n"
30
- end
31
- end
32
- end
33
-
34
- concatenate_source_files :before, :after
35
- end
36
- end
@@ -1,12 +0,0 @@
1
- module Bgem
2
- class TargetFile
3
- def initialize path
4
- @path = Pathname path
5
- end
6
-
7
- def write string
8
- @path.dirname.mkpath
9
- @path.write string
10
- end
11
- end
12
- end
data/spec/bgem_spec.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'helper'
2
-
3
- describe do
4
- it do
5
- output = OUTPUT.read.lines
6
-
7
- assert { output[0] == "module Main\n" }
8
- assert { output[1] == " module Before\n" }
9
- assert { output[2] == " class Inside\n" }
10
- assert { output[3] == " in inside\n" }
11
- assert { output[6] == " in before\n" }
12
-
13
- assert { output[11] == " class After\n" }
14
- end
15
- end
data/spec/helper.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'hobby/devtools/rspec_helper'
2
- require 'bgem'
3
-
4
- INPUT = Pathname "spec/test_src/Main.module.rb"
5
- OUTPUT = Pathname "/tmp/rspec.bgem.#{$$}/output.rb"
6
-
7
- module Bgem
8
- module CLI
9
- def self.parse_argv
10
- { input: INPUT, output: OUTPUT }
11
- end
12
- end
13
- end
14
-
15
- Bgem::CLI.run
@@ -1 +0,0 @@
1
- class_method_inside_Main_module
@@ -1 +0,0 @@
1
- in_after_class
@@ -1 +0,0 @@
1
- in after module
@@ -1 +0,0 @@
1
- in before
@@ -1 +0,0 @@
1
- in inside