linner 0.1.0 → 0.1.1

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: 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