linner 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c41ee9a6cf2562f365e6e9a263adb9e2b8568dbb
4
- data.tar.gz: 93028ef33bbaee5194089522c5c95378a9f15bd1
3
+ metadata.gz: 96597b56da64c0335227695b713d6ca663a93192
4
+ data.tar.gz: ac32c7dfd3bf23876cd8db939a4927a5b5fcf599
5
5
  SHA512:
6
- metadata.gz: 81973fdb6415ffb48402bbe9399281dcc9cac652ee0210d9a9b9cd5b5f4d613112d1ae5e5008df95d260e2180cd74ab087ddc51c61bd3596d3d2a821d80a3e6a
7
- data.tar.gz: 0bdd137d04e3f169271e6721ccb56ceabb7145d1ca14460a0b7ea42572ab81591dc0d63e6f20f5613fa7628ca939076bd4fd8fe32f753d1e919203a30132e882
6
+ metadata.gz: c4ffb6f987945e1aff80caf495e728a0013ac32cbfc200f86f4cbe65223f7a24b4ce3dfb23cd3f24240a95b963aead6829591f94fa7c7f91749e0edf6c3a3993
7
+ data.tar.gz: d105dcab73e1f4b26a55f588e5d2aecb990dd1a9367e5086a8f59bd92ccfcd1dd9e7db1804163bb49cc682c87690b298f2cb6fdc48c6325efdff6b494735a110
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Saito
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.
data/README.md CHANGED
@@ -1,6 +1,21 @@
1
1
  # Linner
2
2
 
3
- HTML5 Application Assembler
3
+ Linner is a full-featured HTML5 application assembler.
4
+
5
+ ![Linner](http://d.pr/i/bWPA+)
6
+
7
+ * Fast!
8
+ * Supports `Sass` and `Coffee`.
9
+ * Supports OS X Lion and Mountaion Lion Notifications.
10
+ * Supports Modular Javascript, All your code will be wrap by `CMD`.
11
+ * Supports `concat` code by `config file` not `directive processor`.
12
+ * Supports `copy` code from `src` to `dist`.
13
+ * Supports Real-time `concat` by `$ linner watch`.
14
+ * Supports `compress` by `$ linner build`.
15
+
16
+ ## Requirements
17
+
18
+ * Ruby 2.0
4
19
 
5
20
  ## Installation
6
21
 
data/lib/linner.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "linner/version"
2
2
  require "linner/command"
3
3
  require "linner/asset"
4
- require "linner/sort"
4
+ require "linner/helper"
5
5
  require "linner/environment"
6
6
  require "linner/wrapper"
7
7
  require "linner/template"
@@ -16,12 +16,11 @@ module Linner
16
16
  end
17
17
 
18
18
  def environment
19
- @env ||= Linner::Environment.new root.join("config.yml")
19
+ @env ||= Environment.new root.join("config.yml")
20
20
  end
21
21
 
22
- def perform(options = {})
23
- compile = options[:compile]
24
- environment.files.values.each do |config|
22
+ def perform(compile: false)
23
+ environment.files.each do |config|
25
24
  Thread.new {concat(config).each {|asset| asset.compress if compile; asset.write}}.join
26
25
  Thread.new {copy(config)}.join
27
26
  end
@@ -30,14 +29,13 @@ module Linner
30
29
  private
31
30
  def concat(config)
32
31
  assets = []
33
- concat, before, after = environment.extract_by(config)
34
- concat.each do |dist, regex|
32
+ config["concat"].each do |dist, regex|
35
33
  Thread.new do
36
- dist = Linner::Asset.new(environment.public_folder.join(dist).to_path)
34
+ dist = Asset.new(File.join environment.public_folder, dist)
35
+ dist.content = ""
37
36
  matches = Dir.glob(File.join root, regex).uniq
38
- matches.extend(Linner::Sort)
39
- matches.sort(before: before, after: after).each do |m|
40
- asset = Linner::Asset.new(m)
37
+ matches.sort_by_before_and_after(config["order"]["before"], config["order"]["after"]).each do |m|
38
+ asset = Asset.new(m)
41
39
  content = asset.content
42
40
  if asset.wrappable?
43
41
  content = asset.wrap
@@ -51,13 +49,13 @@ module Linner
51
49
  end
52
50
 
53
51
  def copy(config)
54
- config["copy"].to_h.each do |dist, regex|
52
+ config["copy"].each do |dist, regex|
55
53
  Thread.new do
56
54
  matches = Dir.glob(File.join root, regex)
57
55
  matches.each do |path|
58
- asset = Linner::Asset.new(path)
56
+ asset = Asset.new(path)
59
57
  asset.path = File.join(environment.public_folder, dist, asset.logical_path)
60
- next if File.exist? asset.path and FileUtils.uptodate? path, [asset.path]
58
+ next if File.exist?(asset.path) and FileUtils.uptodate?(path, [asset.path])
61
59
  asset.write
62
60
  end
63
61
  end.join
data/lib/linner/asset.rb CHANGED
@@ -5,38 +5,26 @@ module Linner
5
5
 
6
6
  def initialize(path)
7
7
  @path = path
8
- if path =~ /#{Linner.root.to_path}\/public/
9
- @content = ""
10
- else
11
- @content = Linner::Template.new(path).render
12
- end
13
- end
14
-
15
- def type
16
- @type ||= if @path =~ /\.(js|coffee)$/
17
- "script"
18
- elsif @path =~ /\.(css|sass|scss)/
19
- "style"
20
- end
8
+ @content ||= File.exist?(path) ? Tilt.new(path).render : ""
21
9
  end
22
10
 
23
11
  def wrap
24
- Linner::Wrapper.wrap(logical_path.chomp(File.extname logical_path), @content)
12
+ Wrapper.wrap(logical_path.chomp(File.extname logical_path), @content)
25
13
  end
26
14
 
27
15
  def wrappable?
28
- !!(!@path.include? Linner.root.join("vendor").to_path and type == "script")
16
+ !!(@path.include? Linner.root.join("app").to_path and Template.template_for_script?(@path))
29
17
  end
30
18
 
31
19
  def write
32
20
  FileUtils.mkdir_p File.dirname(@path)
33
- File.open @path, "w+" do |file|
21
+ File.open @path, "w" do |file|
34
22
  file.write @content
35
23
  end
36
24
  end
37
25
 
38
26
  def compress
39
- @content = Linner::Compressor.compress(self)
27
+ @content = Compressor.compress(self)
40
28
  end
41
29
 
42
30
  def logical_path
@@ -11,7 +11,7 @@ module Linner
11
11
 
12
12
  desc "build", "build assets"
13
13
  def build
14
- Linner::Notifier.info do
14
+ Notifier.info do
15
15
  Linner.perform compile: true
16
16
  end
17
17
  end
@@ -20,16 +20,16 @@ module Linner
20
20
  def watch
21
21
  proc = Proc.new do |modified, added, removed|
22
22
  begin
23
- Linner::Notifier.info{ Linner.perform }
23
+ Notifier.info{ Linner.perform }
24
24
  rescue
25
- Linner::Notifier.error $!
25
+ Notifier.error $!
26
26
  end
27
27
  end
28
28
  proc.call
29
29
  listener = Listen.to "app/", "vendor/", "test/", filter: /\.(js|coffee|css|sass|scss)$/
30
30
  listener.change &proc
31
31
  trap :INT do
32
- Linner::Notifier.exit
32
+ Notifier.exit
33
33
  exit!
34
34
  end
35
35
  listener.start!
@@ -37,7 +37,7 @@ module Linner
37
37
 
38
38
  desc "clean", "clean assets"
39
39
  def clean
40
- FileUtils.rm_rf File.join(Linner.environment.public_folder, "/.")
40
+ FileUtils.rm_rf Dir.glob("#{Linner.environment.public_folder}/*")
41
41
  end
42
42
 
43
43
  desc "new", "create the skeleton of project"
@@ -5,10 +5,9 @@ module Linner
5
5
  class Compressor
6
6
 
7
7
  def self.compress(asset)
8
- case asset.type
9
- when "script"
8
+ if Template.template_for_script? asset.path
10
9
  Uglifier.compile asset.content, comments: "none"
11
- when "style"
10
+ elsif Template.template_for_style? asset.path
12
11
  YUI::CssCompressor.new.compress asset.content
13
12
  end
14
13
  end
@@ -4,26 +4,25 @@ module Linner
4
4
  class Environment
5
5
 
6
6
  def initialize(path)
7
- @config ||= YAML::load File.read path
7
+ @env ||= (YAML::load(File.read path) || Hash.new)
8
+ @convension = YAML::load File.read(File.join File.dirname(__FILE__), "../../vendor", "config.default.yml")
9
+ @env = @convension.rmerge!(@env)
8
10
  end
9
11
 
10
- def public_folder
11
- Linner.root.join(@config["paths"].to_h["public"] || "public")
12
+ %w(app test vendor public).each do |method|
13
+ define_method("#{method}_folder") do
14
+ Linner.root.join(@env["paths"][method]).expand_path.to_path
15
+ end
12
16
  end
13
17
 
14
- def files
15
- @config["files"] || []
16
- end
17
-
18
- def notifications
19
- @config["notifications"] || false
18
+ %w(notification wrapper).each do |method|
19
+ define_method(method) do
20
+ @env[method]
21
+ end
20
22
  end
21
23
 
22
- def extract_by(file)
23
- concat = file["concat"] || []
24
- before = file["order"].to_h["before"] || []
25
- after = file["order"].to_h["after"] || []
26
- [concat, before, after]
24
+ def files
25
+ @env["files"].values
27
26
  end
28
27
  end
29
28
  end
@@ -1,7 +1,14 @@
1
1
  module Linner
2
- module Sort
2
+ module HashRecursiveMerge
3
+ def rmerge!(other_hash)
4
+ merge!(other_hash) do |key, oldval, newval|
5
+ oldval.class == self.class ? oldval.rmerge!(newval) : newval
6
+ end
7
+ end
8
+ end
3
9
 
4
- def sort(before: [], after: [])
10
+ module Sort
11
+ def sort_by_before_and_after(before, after)
5
12
  sort_by_before(self, before)
6
13
  sort_by_after(self, after)
7
14
  self
@@ -25,3 +32,11 @@ module Linner
25
32
  end
26
33
  end
27
34
  end
35
+
36
+ class Hash
37
+ include Linner::HashRecursiveMerge
38
+ end
39
+
40
+ class Array
41
+ include Linner::Sort
42
+ end
@@ -2,22 +2,23 @@ require "terminal-notifier"
2
2
 
3
3
  module Linner
4
4
  class Notifier
5
+ class << self
6
+ def info
7
+ time = Time.now
8
+ yield
9
+ puts "🍜 : Done in #{'%.3f' % (Time.now - time)}s."
10
+ end
5
11
 
6
- def self.info
7
- time = Time.now
8
- yield
9
- puts "🍜 : Done in #{'%.3f' % (Time.now - time)}s."
10
- end
11
-
12
- def self.error(message)
13
- puts message = "👻 : #{message}!"
14
- if Linner.environment.notifications && TerminalNotifier.available?
15
- TerminalNotifier.notify message, :title => 'Linner'
12
+ def error(message)
13
+ puts message = "👻 : #{message}!"
14
+ if Linner.environment.notifications && TerminalNotifier.available?
15
+ TerminalNotifier.notify message, :title => 'Linner'
16
+ end
16
17
  end
17
- end
18
18
 
19
- def self.exit
20
- puts "\r🍵 : Let's take a break!"
19
+ def exit
20
+ puts "\r🍵 : Let's take a break!"
21
+ end
21
22
  end
22
23
  end
23
24
  end
@@ -1,25 +1,31 @@
1
- require 'tilt'
2
- require 'sass'
3
- require 'coffee_script'
1
+ require "tilt"
2
+ require "sass"
3
+ require "coffee_script"
4
+
5
+ module Tilt
6
+ class JavascriptTemplate < PlainTemplate
7
+ self.default_mime_type = 'application/javascript'
8
+ end
9
+
10
+ class CSSTemplate < PlainTemplate
11
+ self.default_mime_type = 'text/css'
12
+ end
13
+
14
+ Tilt.register Tilt::CSSTemplate, "css"
15
+ Tilt.register Tilt::JavascriptTemplate, "js"
16
+ end
4
17
 
5
18
  module Linner
6
19
  class Template
7
20
 
8
- def initialize(path)
9
- @path = path
10
- end
11
-
12
- def render
13
- if supported_template? @path
14
- Tilt.new(@path).render
15
- else
16
- File.read @path
21
+ class << self
22
+ def template_for_script?(path)
23
+ [Tilt::JavascriptTemplate, Tilt::CoffeeScriptTemplate].include? Tilt[path]
17
24
  end
18
- end
19
25
 
20
- private
21
- def supported_template?(path)
22
- %w[.coffee .sass .scss].include? File.extname(path)
26
+ def template_for_style?(path)
27
+ [Tilt::CSSTemplate, Tilt::SassTemplate, Tilt::ScssTemplate].include? Tilt[path]
28
+ end
23
29
  end
24
30
  end
25
31
  end
@@ -3,7 +3,7 @@ paths:
3
3
  files:
4
4
  scripts:
5
5
  concat:
6
- "scripts/app.js": "app/scripts/**/*.{js,coffee}"
6
+ "scripts/app.js": "app/**/*.{js,coffee}"
7
7
  "scripts/vendor.js": "vendor/**/*.{js,coffee}"
8
8
  order:
9
9
  before:
@@ -20,7 +20,5 @@ files:
20
20
  copy:
21
21
  "/": "app/views/**/*.{html,hbs}"
22
22
  modules:
23
- wrapper: "cmd"
24
- conventions:
25
- ignored: "_"
23
+ wrapper: "CMD"
26
24
  notifications: true
@@ -1,3 +1,3 @@
1
1
  module Linner
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -1,17 +1,13 @@
1
1
  module Linner
2
2
  class Wrapper
3
+ WRAPPER =
4
+ 'window.require.define({"%s":' +
5
+ 'function(exports, require, module){' +
6
+ '%s' +
7
+ ";}});\n"
3
8
 
4
- class << self
5
- def wrapper
6
- 'window.require.define({"%s":' +
7
- 'function(exports, require, module){' +
8
- '%s' +
9
- ";}});\n"
10
- end
11
-
12
- def wrap(name, content)
13
- wrapper % [name, content]
14
- end
9
+ def self.wrap(name, content)
10
+ WRAPPER % [name, content]
15
11
  end
16
12
  end
17
13
  end
data/linner.gemspec CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency "yui-compressor", "~> 0.9.6"
28
28
  spec.add_dependency "terminal-notifier", "~> 1.4"
29
29
 
30
- spec.add_development_dependency "bundler", "~> 1.3"
31
30
  spec.add_development_dependency "rake"
31
+ spec.add_development_dependency "rspec", "~> 2.14"
32
+ spec.add_development_dependency "bundler", "~> 1.3"
32
33
  end
@@ -0,0 +1 @@
1
+ console.log("app.js")
File without changes
@@ -0,0 +1,8 @@
1
+ require "spec_helper"
2
+
3
+ describe Asset do
4
+
5
+ before(:each) do
6
+ @asset = Asset.new("app.js")
7
+ end
8
+ end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe Environment do
4
+ before(:each) do
5
+ @env = Environment.new(root.join "config.yml")
6
+ end
7
+
8
+ describe "convension" do
9
+ it "should equals default path folder" do
10
+ @env.app_folder.should == root.join("app").to_path
11
+ @env.test_folder.should == root.join("test").to_path
12
+ @env.vendor_folder.should == root.join("vendor").to_path
13
+ @env.public_folder.should == root.join("public").to_path
14
+ end
15
+
16
+ it "should equals default config" do
17
+ @env.notification.should be_true
18
+ @env.wrapper.should == "CMD"
19
+ @env.files.should respond_to(:each)
20
+ end
21
+
22
+ it "should equals default before and after" do
23
+ @env.files.each do |file|
24
+ file["copy"].should respond_to(:each)
25
+ file["concat"].should respond_to(:each)
26
+ file["order"]["before"].should respond_to(:each)
27
+ file["order"]["after"].should respond_to(:each)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ require "spec_helper"
2
+
3
+ describe Array do
4
+ before(:each) do
5
+ @array = %w[app.js jquery.js bootstrap.css reset.css vendor.js]
6
+ end
7
+
8
+ describe :sort do
9
+ it "won't change when before and after are empty array" do
10
+ @array.sort_by_before_and_after([], []).should be_equal @array
11
+ end
12
+
13
+ it "will change by before items" do
14
+ @array.sort_by_before_and_after(["jquery.js", "vendor.js"], [])
15
+ @array.should =~ %w[jquery.js vendor.js app.js bootstrap.css reset.css]
16
+ end
17
+
18
+ it "will change by after items" do
19
+ @array.sort_by_before_and_after([], ["reset.css", "bootstrap.css"])
20
+ @array.should =~ %w[app.js jquery.js vendor.js reset.css bootstrap.css]
21
+ end
22
+
23
+ it "will change by before and after items" do
24
+ @array.sort_by_before_and_after(["jquery.js", "vendor.js"], ["reset.css", "bootstrap.css"])
25
+ @array.should =~ %w[jquery.js vendor.js app.js reset.css bootstrap.css]
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,26 @@
1
+ require "spec_helper"
2
+
3
+ describe Template do
4
+
5
+ describe :templates do
6
+
7
+ it "should be javascript tempalate" do
8
+ Tilt["app.js"].should == Tilt::JavascriptTemplate
9
+ end
10
+
11
+ it "should be css template" do
12
+ Tilt["app.css"].should == Tilt::CSSTemplate
13
+ end
14
+
15
+ it "should tempalte for script" do
16
+ Template.template_for_script? "app.js".should be_true
17
+ Template.template_for_script? "app.coffee".should be_true
18
+ end
19
+
20
+ it "should tempalte for style" do
21
+ Template.template_for_style? "app.css".should be_true
22
+ Template.template_for_style? "app.sass".should be_true
23
+ Template.template_for_style? "app.scss".should be_true
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+
3
+ describe Wrapper do
4
+
5
+ before(:each) do
6
+ @name = "app"
7
+ @script = 'module.exports = function() {return console.log("log from app!");};'
8
+ @expected_script = 'window.require.define({"app":' +
9
+ 'function(exports, require, module){' +
10
+ 'module.exports = function() {' +
11
+ 'return console.log("log from app!");' +
12
+ '};' +
13
+ ";}});\n"
14
+ end
15
+
16
+ describe :wrap do
17
+ it "should wrapped by wrapper" do
18
+ script = Wrapper.wrap(@name, @script)
19
+ script.should eq @expected_script
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ require "linner"
2
+
3
+ include Linner
4
+
5
+ module Linner
6
+ extend self
7
+
8
+ def root
9
+ Pathname(".").join("spec/fixtures").expand_path
10
+ end
11
+ end
@@ -0,0 +1,38 @@
1
+ paths:
2
+ app: "app"
3
+ test: "test"
4
+ vendor: "vendor"
5
+ public: "public"
6
+ files:
7
+ scripts:
8
+ concat:
9
+ "scripts/app.js": "app/**/*.{js,coffee}"
10
+ "scripts/vendor.js": "vendor/**/*.{js,coffee}"
11
+ copy: {}
12
+ order:
13
+ before:
14
+ - "vendor/jquery-1.10.2.js"
15
+ after: []
16
+ styles:
17
+ concat:
18
+ "styles/app.css": "app/**/[a-z]*.{css,scss,sass}"
19
+ copy: {}
20
+ order:
21
+ before: []
22
+ after: []
23
+ images:
24
+ concat: {}
25
+ copy:
26
+ "images/": "app/**/*.{png,gif}"
27
+ order:
28
+ before: []
29
+ after: []
30
+ views:
31
+ concat: {}
32
+ copy:
33
+ "/": "app/**/*.{html,hbs}"
34
+ order:
35
+ before: []
36
+ after: []
37
+ wrapper: "CMD"
38
+ notification: true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-14 00:00:00.000000000 Z
11
+ date: 2013-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -123,33 +123,47 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '1.4'
125
125
  - !ruby/object:Gem::Dependency
126
- name: bundler
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - ~>
130
144
  - !ruby/object:Gem::Version
131
- version: '1.3'
145
+ version: '2.14'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - ~>
137
151
  - !ruby/object:Gem::Version
138
- version: '1.3'
152
+ version: '2.14'
139
153
  - !ruby/object:Gem::Dependency
140
- name: rake
154
+ name: bundler
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - '>='
157
+ - - ~>
144
158
  - !ruby/object:Gem::Version
145
- version: '0'
159
+ version: '1.3'
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - '>='
164
+ - - ~>
151
165
  - !ruby/object:Gem::Version
152
- version: '0'
166
+ version: '1.3'
153
167
  description: HTML5 Application Assembler
154
168
  email:
155
169
  - saitowu@gmail.com
@@ -159,8 +173,10 @@ extensions: []
159
173
  extra_rdoc_files: []
160
174
  files:
161
175
  - .gitignore
176
+ - .rspec
162
177
  - Gemfile
163
178
  - Gemfile.lock
179
+ - LICENSE
164
180
  - README.md
165
181
  - Rakefile
166
182
  - bin/linner
@@ -169,8 +185,8 @@ files:
169
185
  - lib/linner/command.rb
170
186
  - lib/linner/compressor.rb
171
187
  - lib/linner/environment.rb
188
+ - lib/linner/helper.rb
172
189
  - lib/linner/notifier.rb
173
- - lib/linner/sort.rb
174
190
  - lib/linner/template.rb
175
191
  - lib/linner/templates/app/images/.gitkeep
176
192
  - lib/linner/templates/app/scripts/app.coffee
@@ -184,6 +200,15 @@ files:
184
200
  - lib/linner/version.rb
185
201
  - lib/linner/wrapper.rb
186
202
  - linner.gemspec
203
+ - spec/fixtures/app.js
204
+ - spec/fixtures/config.yml
205
+ - spec/linner/asset_spec.rb
206
+ - spec/linner/environment_spec.rb
207
+ - spec/linner/helper_spec.rb
208
+ - spec/linner/template_spec.rb
209
+ - spec/linner/wrapper_spec.rb
210
+ - spec/spec_helper.rb
211
+ - vendor/config.default.yml
187
212
  homepage: https://github.com/saitowu/linner
188
213
  licenses:
189
214
  - MIT
@@ -208,4 +233,12 @@ rubygems_version: 2.0.3
208
233
  signing_key:
209
234
  specification_version: 4
210
235
  summary: HTML5 Application Assembler
211
- test_files: []
236
+ test_files:
237
+ - spec/fixtures/app.js
238
+ - spec/fixtures/config.yml
239
+ - spec/linner/asset_spec.rb
240
+ - spec/linner/environment_spec.rb
241
+ - spec/linner/helper_spec.rb
242
+ - spec/linner/template_spec.rb
243
+ - spec/linner/wrapper_spec.rb
244
+ - spec/spec_helper.rb