issen 0.0.1

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.
@@ -0,0 +1 @@
1
+ service_name: travis-ci
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
@@ -0,0 +1,6 @@
1
+ inherit_from: rubocop-todo.yml
2
+
3
+ LineLength:
4
+ Enabled: false
5
+ Semicolon:
6
+ Enabled: false
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ before_install:
3
+ - gem update --system 2.1.11
4
+ - gem --version
5
+ rvm:
6
+ - 1.9.3
7
+ - 2.0.0
8
+ - 2.1.0
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+ gem "rspec", "~> 2.14.1"
5
+ gem "thor", "~> 0.18.1"
6
+ gem "simplecov", "~> 0.8.2"
7
+ gem "activesupport", "~> 4.0.1"
8
+ gem "activemodel", "~> 4.0.2"
9
+ group :test do
10
+ gem 'coveralls', require: false
11
+ end
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 tbpgr
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,128 @@
1
+ # Issen
2
+
3
+ [![Build Status](https://travis-ci.org/tbpgr/issen.png?branch=master)](https://travis-ci.org/tbpgr/issen)
4
+ [![Coverage Status](https://coveralls.io/repos/tbpgr/issen/badge.png)](https://coveralls.io/r/tbpgr/issen)
5
+ [![Code Climate](https://codeclimate.com/github/tbpgr/issen.png)](https://codeclimate.com/github/tbpgr/issen)
6
+
7
+ Issen is files and directories generator by Emmet-like syntax.
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'issen'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install issen
22
+
23
+ ## Syntax List
24
+ | syntax | mean |
25
+ |:----------- |:------------ |
26
+ |~ |nest file or directory inside |
27
+ |\+ |to place file or directory on the same level |
28
+ |- |to place file or directory on the same level - 1|
29
+
30
+ ## Usage
31
+ ### create Issenfile
32
+ ~~~bash
33
+ issen init
34
+ ~~~
35
+
36
+ Issenfile
37
+ ~~~ruby
38
+ # encoding: utf-8
39
+
40
+ # output directory
41
+ # output_dir is required
42
+ # output_dir allow only String
43
+ # output_dir's default value => "output directory name"
44
+ output_dir "output directory name"
45
+ ~~~
46
+
47
+ ### edit Issenfile
48
+ Issenfile
49
+ ~~~ruby
50
+ # encoding: utf-8
51
+ output_dir "output"
52
+ ~~~
53
+
54
+ ### output examples
55
+ * 1directory case
56
+ to create directory, 'd_xxxx'. xxx equals directory_name
57
+
58
+ ~~~bash
59
+ issen e 'd_hoge'
60
+ ~~~
61
+
62
+ ~~~output
63
+ └─output
64
+ └─hoge
65
+ ~~~
66
+
67
+ * file case
68
+
69
+ ~~~bash
70
+ issen e 'hoge.txt'
71
+ ~~~
72
+
73
+ ~~~output
74
+ └─output
75
+ └─hoge.txt
76
+ ~~~
77
+
78
+ * > case
79
+
80
+ ~~~bash
81
+ issen e 'd_hoge1~hoge2.txt'
82
+ ~~~
83
+
84
+ ~~~output
85
+ └─output
86
+ └─hoge1
87
+ hoge2.txt
88
+ ~~~
89
+
90
+ * + case
91
+
92
+ ~~~bash
93
+ issen e 'd_hoge1+hoge2.txt'
94
+ ~~~
95
+
96
+ ~~~output
97
+ └─output
98
+ │ hoge2.txt
99
+
100
+ └─hoge1
101
+ ~~~
102
+
103
+
104
+ * ^ case
105
+
106
+ ~~~bash
107
+ issen e 'd_hoge1~d_hoge2~hoge3.txt-hoge2_2.txt'
108
+ ~~~
109
+
110
+ ~~~output
111
+ └─output
112
+ └─hoge1
113
+ │ hoge2_2.txt
114
+
115
+ └─hoge2
116
+ hoge3.txt
117
+ ~~~
118
+
119
+ ## History
120
+ * version 0.0.1 : first release.
121
+
122
+ ## Contributing
123
+
124
+ 1. Fork it
125
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
126
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
127
+ 4. Push to the branch (`git push origin my-new-feature`)
128
+ 5. Create new Pull Request
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core'
3
+ require 'rspec/core/rake_task'
4
+ task :default => [:spec]
5
+
6
+ RSpec::Core::RakeTask.new(:spec) do |spec|
7
+ spec.pattern = 'spec/**/*_spec.rb'
8
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require 'issen_core'
5
+ require 'issen/version'
6
+ require 'thor'
7
+
8
+ module Issen
9
+ # = Issen CLI
10
+ class CLI < Thor
11
+ class_option :help, type: :boolean, aliases: '-h', desc: 'help message.'
12
+ class_option :version, type: :boolean, desc: 'version'
13
+
14
+ desc 'execute', 'generate files and directories generator by Emmet-like syntax'
15
+ def execute(*args)
16
+ input = args[0]
17
+ if input.nil? || input.empty?
18
+ puts 'nil or empty input is invalid'
19
+ return
20
+ end
21
+ Issen::Core.new.execute input
22
+ end
23
+
24
+ desc 'init', 'generate Issenfile'
25
+ def init
26
+ Issen::Core.new.init
27
+ end
28
+
29
+ desc 'version', 'version'
30
+ def version
31
+ p Issen::VERSION
32
+ end
33
+ end
34
+ end
35
+
36
+ Issen::CLI.start(ARGV)
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'issen/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "issen"
8
+ spec.version = Issen::VERSION
9
+ spec.authors = ["tbpgr"]
10
+ spec.email = ["tbpgr@tbpgr.jp"]
11
+ spec.description = %q{Issen is files and directories generator by Emmet-like syntax.}
12
+ spec.summary = %q{Issen is files and directories generator by Emmet-like syntax.}
13
+ spec.homepage = "https://github.com/tbpgr/issen"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "activesupport", "~> 4.0.1"
22
+ spec.add_runtime_dependency "activemodel", "~> 4.0.2"
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.3"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec", "~> 2.14.1"
27
+ spec.add_development_dependency "simplecov", "~> 0.8.2"
28
+ spec.add_development_dependency 'coveralls'
29
+ end
@@ -0,0 +1,3 @@
1
+ module Issen
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,105 @@
1
+ # encoding: utf-8
2
+ require 'issen_dsl'
3
+ require 'active_support/core_ext/object/inclusion'
4
+ require 'active_support/core_ext/string/starts_ends_with'
5
+
6
+ module Issen
7
+ # Issen Core
8
+ class Core
9
+ ISSEN_FILE = 'Issenfile'
10
+ ISSEN_TEMPLATE = <<-EOS
11
+ # encoding: utf-8
12
+
13
+ # output directory
14
+ # output_dir is required
15
+ # output_dir allow only String
16
+ # output_dir's default value => "output directory name"
17
+ output_dir "output directory name"
18
+ EOS
19
+
20
+ # generate Issenfile to current directory.
21
+ def init
22
+ File.open(ISSEN_FILE, 'w') { |f|f.puts ISSEN_TEMPLATE }
23
+ end
24
+
25
+ # create dirs and files
26
+ def execute(input)
27
+ dsl = read_dsl
28
+ output_dir = dsl.issen.output_dir
29
+ create_root_dir(output_dir)
30
+ headings = to_heading(input, output_dir)
31
+ end
32
+
33
+ private
34
+
35
+ def read_dsl
36
+ src = File.open(ISSEN_FILE) { |f|f.read }
37
+ dsl = Issen::Dsl.new
38
+ dsl.instance_eval src
39
+ dsl
40
+ end
41
+
42
+ def create_root_dir(output_dir)
43
+ Dir.mkdir(output_dir) unless Dir.exists? output_dir
44
+ end
45
+
46
+ def to_heading(input, output_dir)
47
+ input_chars = input.chars
48
+ level, word_ret, parent_dir, grand_parent_dir = 0, [], output_dir, output_dir
49
+ input_chars.each_with_index do |char, index|
50
+ key_word = char.in? %w{~ + -}
51
+ if key_word
52
+ word = word_ret.join
53
+ word_dup = word.dup
54
+ dir_file = create_file_dir(word, parent_dir)
55
+ parent_dir, grand_parent_dir = get_grand_and_parent(parent_dir, grand_parent_dir, word_dup, word, level, char)
56
+ word_ret = []
57
+ else
58
+ word_ret << char
59
+ end
60
+ end
61
+ word = word_ret.join
62
+ create_file_dir(word, parent_dir)
63
+ end
64
+
65
+ def get_grand_and_parent(parent_dir, grand_parent_dir, word_dup, word, level, char)
66
+ level += char == '+' ? 0 : char == '~' ? 1 : -1
67
+ case level
68
+ when 0
69
+ # not change
70
+ when 1
71
+ if is_dir?(word_dup)
72
+ grand_parent_dir = parent_dir
73
+ parent_dir = "#{parent_dir}/#{word}"
74
+ end
75
+ when -1
76
+ parent_dir = grand_parent_dir
77
+ end
78
+ [parent_dir, grand_parent_dir]
79
+ end
80
+
81
+ def create_file_dir(word, parent_dir)
82
+ is_dir = is_dir?(word)
83
+ dir_file = dir_file_name(word, parent_dir)
84
+ if is_dir
85
+ Dir.mkdir(dir_file) unless Dir.exists? dir_file
86
+ else
87
+ File.open(dir_file, 'w:UTF-8') { |f|f.print '' } unless File.exists? dir_file
88
+ end
89
+ dir_file
90
+ end
91
+
92
+ def dir_file_name(word, parent_dir)
93
+ word.gsub!(/^d_/, '')
94
+ "#{parent_dir}/#{word}"
95
+ end
96
+
97
+ def is_dir?(word)
98
+ word.starts_with?('d_')
99
+ end
100
+
101
+ def to_head(heading, head_char)
102
+ heading.reduce([]) { |ret, value|ret << "#{head_char * value[:level]}#{value[:word]}" }.join("\n")
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+ require 'issen_dsl_model'
3
+
4
+ module Issen
5
+ class Dsl
6
+ attr_accessor :issen
7
+
8
+ # String Define
9
+ [:output_dir].each do |f|
10
+ define_method f do |value|
11
+ eval "@issen.#{f.to_s} = '#{value}'", binding
12
+ end
13
+ end
14
+
15
+ # Array/Hash/Boolean Define
16
+ [].each do |f|
17
+ define_method f do |value|
18
+ eval "@issen.#{f.to_s} = #{value}", binding
19
+ end
20
+ end
21
+
22
+ def initialize
23
+ @issen = Issen::DslModel.new
24
+ @issen.output_dir = 'args_value2'
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ require 'active_model'
3
+
4
+ module Issen
5
+ class DslModel
6
+ include ActiveModel::Model
7
+
8
+ # output directory
9
+ attr_accessor :output_dir
10
+ validates :output_dir, presence: true
11
+
12
+ end
13
+ end
@@ -0,0 +1,36 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`.
2
+ # The point is for the user to remove these configuration records
3
+ # one by one as the offences are removed from the code base.
4
+
5
+ CyclomaticComplexity:
6
+ Enabled: false
7
+
8
+ Documentation:
9
+ Enabled: false
10
+
11
+ EmptyLinesAroundBody:
12
+ Enabled: false
13
+
14
+ Encoding:
15
+ Enabled: false
16
+
17
+ Eval:
18
+ Enabled: false
19
+
20
+ LineLength:
21
+ Enabled: false
22
+
23
+ MethodLength:
24
+ Enabled: false
25
+
26
+ NestedTernaryOperator:
27
+ Enabled: false
28
+
29
+ ParameterLists:
30
+ Enabled: false
31
+
32
+ ReduceArguments:
33
+ Enabled: false
34
+
35
+ UselessAssignment:
36
+ Enabled: false
@@ -0,0 +1,95 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'issen_core'
4
+
5
+ describe Issen::Core do
6
+ context :execute do
7
+ TMP_ISSEN = 'tmp_issen'
8
+ cases = [
9
+ {
10
+ case_no: 1,
11
+ case_title: 'create dir case',
12
+ issenfile: 'output_dir "./tmp"',
13
+ output_dir: './tmp',
14
+ input: 'd_hoge',
15
+ expected_type: [:directory?],
16
+ expected: ['./tmp/hoge'],
17
+ },
18
+ {
19
+ case_no: 2,
20
+ case_title: 'create file case',
21
+ issenfile: 'output_dir "./tmp"',
22
+ output_dir: './tmp',
23
+ input: 'hoge.txt',
24
+ expected_type: [:file?],
25
+ expected: ['./tmp/hoge.txt'],
26
+ },
27
+ {
28
+ case_no: 3,
29
+ case_title: '+ case',
30
+ issenfile: 'output_dir "./tmp"',
31
+ output_dir: './tmp',
32
+ input: 'd_hoge~hoge.txt',
33
+ expected_type: [:directory?, :file?],
34
+ expected: ['./tmp/hoge', './tmp/hoge/hoge.txt'],
35
+ },
36
+ {
37
+ case_no: 4,
38
+ case_title: '+ case',
39
+ issenfile: 'output_dir "./tmp"',
40
+ output_dir: './tmp',
41
+ input: 'd_hoge+hoge.txt',
42
+ expected_type: [:directory?, :file?],
43
+ expected: ['./tmp/hoge', './tmp/hoge.txt'],
44
+ },
45
+ {
46
+ case_no: 5,
47
+ case_title: '^ case',
48
+ issenfile: 'output_dir "./tmp"',
49
+ output_dir: './tmp',
50
+ input: 'd_hoge+d_hige~hige.txt-hoge.txt',
51
+ expected_type: [:directory?, :directory?, :file?, :file?],
52
+ expected: ['./tmp/hoge', './tmp/hige', './tmp/hige/hige.txt', './tmp/hoge.txt'],
53
+ },
54
+ ]
55
+
56
+ cases.each do |c|
57
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
58
+ begin
59
+ case_before c
60
+
61
+ # -- given --
62
+ issen_core = Issen::Core.new
63
+
64
+ # -- when --
65
+ issen_core.execute c[:input]
66
+ actual = Dir.glob("#{c[:output_dir]}/**/*")
67
+
68
+ # -- then --
69
+ expect(actual.size).to eq(c[:expected].size)
70
+ actual.each do |file|
71
+ is_exists = c[:expected].include? file
72
+ expect(is_exists).to be_true
73
+ type = c[:expected_type][c[:expected].index(file)]
74
+ is_correct_type = File.send(type, file)
75
+ expect(is_correct_type).to be_true
76
+ end
77
+ ensure
78
+ case_after c
79
+ end
80
+ end
81
+
82
+ def case_before(c)
83
+ Dir.mkdir(TMP_ISSEN) unless File.exists?(TMP_ISSEN)
84
+ Dir.chdir(TMP_ISSEN)
85
+ File.open(Issen::Core::ISSEN_FILE, 'w:UTF-8') { |f|f.print c[:issenfile] }
86
+ end
87
+
88
+ def case_after(c)
89
+ Dir.chdir('../')
90
+ return unless File.exists? TMP_ISSEN
91
+ FileUtils.rm_rf("./#{TMP_ISSEN}")
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,15 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start do
9
+ add_filter '/spec/'
10
+ end
11
+ RSpec.configure do |config|
12
+ config.treat_symbols_as_metadata_keys_with_true_values = true
13
+ config.run_all_when_everything_filtered = true
14
+ config.filter_run :focus
15
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: issen
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - tbpgr
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-02-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: &26588592 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 4.0.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *26588592
25
+ - !ruby/object:Gem::Dependency
26
+ name: activemodel
27
+ requirement: &26588292 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 4.0.2
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *26588292
36
+ - !ruby/object:Gem::Dependency
37
+ name: bundler
38
+ requirement: &26588016 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '1.3'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *26588016
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: &26587788 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *26587788
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &26587464 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 2.14.1
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *26587464
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: &26587164 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 0.8.2
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *26587164
80
+ - !ruby/object:Gem::Dependency
81
+ name: coveralls
82
+ requirement: &26586936 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *26586936
91
+ description: Issen is files and directories generator by Emmet-like syntax.
92
+ email:
93
+ - tbpgr@tbpgr.jp
94
+ executables:
95
+ - issen
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - .coveralls.yml
100
+ - .gitignore
101
+ - .rspec
102
+ - .rubocop.yml
103
+ - .travis.yml
104
+ - Gemfile
105
+ - LICENSE.txt
106
+ - README.md
107
+ - Rakefile
108
+ - bin/issen
109
+ - issen.gemspec
110
+ - lib/issen/version.rb
111
+ - lib/issen_core.rb
112
+ - lib/issen_dsl.rb
113
+ - lib/issen_dsl_model.rb
114
+ - rubocop-todo.yml
115
+ - spec/issen_core_spec.rb
116
+ - spec/spec_helper.rb
117
+ homepage: https://github.com/tbpgr/issen
118
+ licenses:
119
+ - MIT
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 1.8.11
139
+ signing_key:
140
+ specification_version: 3
141
+ summary: Issen is files and directories generator by Emmet-like syntax.
142
+ test_files:
143
+ - spec/issen_core_spec.rb
144
+ - spec/spec_helper.rb
145
+ has_rdoc: