semantic-ui-sass 0.0.1 → 0.0.2

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: d018e8e1837be3ef5a45d535f3e52a796dcb38a1
4
- data.tar.gz: 6b557f71933b1372a04f1422a001376defcc8745
3
+ metadata.gz: 43548f63a28e7e11f587faf299202548528b327f
4
+ data.tar.gz: 7efdd6a498a980adbb31e8ec372de93243bf60db
5
5
  SHA512:
6
- metadata.gz: 508cebd9e012674ff7d1597284a2f77b2d351eafe7bdbc7cc76ee88c95eb77c9bb5f38cecea99ad16070f9080293000545c05d899a0cb2c2f2321aaa344601be
7
- data.tar.gz: 4f7d692b411147e6bb4ce6bd42e427799c2f7b3d82b4a44824c32195ab8b338dc19d3ae39182c732b3f475b43f2cdab2d751054b3b2887f04b02fedd6a0cebf6
6
+ metadata.gz: af2ca59c8266fe91899a2767637c712de8e40d877f6b6e6737a831b46bbf52e98ab0b1c59b5fbb9ecf6390a361014ac763d3d2642609466cb4cc184be2c9a62e
7
+ data.tar.gz: 3e314de76d1e3ff90864a148a1ee7a542057bc848233bbc19d088ce44ff96ee5324092dbb1b3bd0207c4fa3699db61386096c11390616301d4337816da75e4f1
data/.gitignore CHANGED
@@ -15,4 +15,5 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
- .DS_Store
18
+ .DS_Store
19
+ .env
data/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ ## 0.0.2
2
+
3
+ ### Features
4
+
5
+ * Add support for compass
6
+
7
+ ```console
8
+ gem install semantic-ui-sass
9
+ compass create compass-project -r semantic-ui-sass --using semantic-ui
10
+ ```
11
+
12
+ ## 0.0.1
13
+
14
+ * Initial version
data/README.md CHANGED
@@ -1,18 +1,23 @@
1
1
  # Semantic UI for Sass
2
2
 
3
- `semantic-ui-sass` is an Sass-powered version of [Semantic UI](https://github.com/jlukic/Semantic-UI).
3
+ `semantic-ui-sass` is an Sass-powered version of [Semantic UI](https://github.com/jlukic/Semantic-UI) and ready to drop into Rails & Compass.
4
4
 
5
5
  ## Installation and Usage
6
6
 
7
7
  ```ruby
8
- gem 'semantic-ui-sass', '~> 0.0.1'
8
+ gem 'semantic-ui-sass', '~> 0.0.2'
9
+ ```
10
+ or
11
+
12
+ ```ruby
13
+ gem 'semantic-ui-sass', github: 'doabit/semantic-ui-sass'
9
14
  ```
10
15
 
11
16
  `bundle install` and restart your server to make the files available through the pipeline.
12
17
 
13
- ## Usage
18
+ # semantic-ui-sass with Rails
14
19
 
15
- ### CSS
20
+ ## CSS
16
21
 
17
22
  Import Semantic in an SCSS file (for example, `application.css.scss`) to get all of Semantic's styles
18
23
 
@@ -26,7 +31,7 @@ You can also include modules
26
31
  @import "semantic-ui/collections/menu";
27
32
  ```
28
33
 
29
- ### Javascripts
34
+ ## Javascripts
30
35
 
31
36
  We have a helper that includes all Semantic javascripts. Put this in your Javascript manifest (usually in `application.js`) to
32
37
 
@@ -42,6 +47,41 @@ You can also load individual modules, provided you also require any dependencies
42
47
  //= require semantic-ui/dropdown
43
48
  ```
44
49
 
50
+ # semantic-ui-sass with Compass
51
+
52
+ ## New project
53
+
54
+ Install the gem and create a new project using the gem.
55
+
56
+ ```console
57
+ gem install semantic-ui-sass
58
+ compass create compass-project -r semantic-ui-sass --using semantic-ui
59
+ ```
60
+
61
+ This will sort a few things out:
62
+
63
+ * You'll get a starting `styles.scss`
64
+ * You'll get a compiled stylesheet compiled & ready to drop into your application
65
+ * We'll also copy the Semantic javascripts & images & fonts into their respective folders for you
66
+
67
+ ## Existing project
68
+
69
+ Install the gem, add the require statement to the top of your configuration file, and install the extension.
70
+
71
+ ```console
72
+ gem install semantic-ui-sass
73
+ ```
74
+
75
+ ```ruby
76
+ # In config.rb
77
+ require 'semantic-ui-sass'
78
+ ```
79
+
80
+ ```console
81
+ compass install semantic-ui
82
+ ```
83
+
84
+
45
85
  ## Contributing
46
86
 
47
87
  1. Fork it
data/Rakefile CHANGED
@@ -1,5 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
- desc 'Convert less to scss'
3
- task :convert do
4
- ruby('./tasks/converter.rb')
2
+
3
+ desc 'Convert semantic-ui less to sass'
4
+ task :convert, :branch do |t, args|
5
+ require './tasks/converter'
6
+ branch = args[:branch]
7
+ Converter.new(branch).process
5
8
  end
@@ -0,0 +1,22 @@
1
+ module Semantic
2
+ module Ui
3
+ module Sass
4
+ class FrameworkNotFound < StandardError; end
5
+
6
+ if defined?(::Rails)
7
+ require 'semantic/ui/sass/engine'
8
+ end
9
+
10
+ if defined?(::Compass)
11
+ base = File.join(File.dirname(__FILE__), '..')
12
+ styles = File.join(base, 'app', 'assets', 'stylesheets')
13
+ templates = File.join(base, 'templates')
14
+ ::Compass::Frameworks.register('semantic-ui', :path => base, :stylesheets_directory => styles, :templates_directory => templates)
15
+ end
16
+
17
+ if !(defined?(::Rails) || defined?(::Compass))
18
+ raise Semantic::Ui::Sass::FrameworkNotFound, "semantic-ui-sass requires either Rails > 3.1 or Compass, neither of which are loaded"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,7 +1,7 @@
1
1
  module Semantic
2
2
  module Ui
3
3
  module Sass
4
- VERSION = "0.0.1"
4
+ VERSION = "0.0.2"
5
5
  SEMANTIC_UI_SHA = '7ca9111379ecda0be4bc801cc05ff2cf164c225b'
6
6
  end
7
7
  end
@@ -21,4 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_runtime_dependency 'sass', '~> 3.2'
24
+ spec.add_development_dependency 'sass-rails', '>= 3.2'
25
+ spec.add_development_dependency 'pry'
26
+ spec.add_development_dependency 'dotenv'
24
27
  end
data/tasks/converter.rb CHANGED
@@ -1,19 +1,34 @@
1
1
  # Based on convert script from vwall/compass-twitter-bootstrap gem.
2
- # https://github.com/vwall/compass-twitter-bootstrap/blob/master/build/convert.rb
2
+ # https://github.com/vwall/compass-twitter-bootstrap/blob/#{@branch}/build/convert.rb
3
3
 
4
4
  require 'open-uri'
5
5
  require 'json'
6
6
  require 'fileutils'
7
+ require "pry"
8
+ require "dotenv"
9
+ Dotenv.load
7
10
 
8
11
  class Converter
9
12
 
10
- def initialize
11
- @branch_sha = get_tree_sha
12
- @paths = ['collections', 'elements', 'views', 'modules']
13
- @save_at = { js: 'app/assets/javascripts/semantic-ui',
14
- scss: 'app/assets/stylesheets/semantic-ui',
15
- images: 'app/assets/images/semantic-ui',
16
- fonts: 'app/assets/fonts/semantic-ui' }
13
+ GIT_DATA = 'https://api.github.com/repos'
14
+ GIT_RAW = 'https://raw.github.com'
15
+ TOKEN = ENV['TOKEN']
16
+
17
+ def initialize(branch)
18
+ @repo = 'jlukic/Semantic-UI'
19
+ @repo_url = "https://github.com/#@repo"
20
+ @branch = branch || 'master'
21
+ @git_data_trees = "#{GIT_DATA}/#{@repo}/git/trees"
22
+ @git_raw_src = "#{GIT_RAW}/#{@repo}/#{@branch}/src"
23
+ @branch_sha = get_tree_sha
24
+ @less_paths = ['collections', 'elements', 'views', 'modules']
25
+ @js_paths = ['modules', 'behavior']
26
+ @fonts_images_paths = ['fonts', 'images']
27
+ @save_at = { js: 'app/assets/javascripts/semantic-ui',
28
+ scss: 'app/assets/stylesheets/semantic-ui',
29
+ images: 'app/assets/images/semantic-ui',
30
+ fonts: 'app/assets/fonts/semantic-ui'
31
+ }
17
32
  end
18
33
 
19
34
  def process
@@ -25,64 +40,48 @@ class Converter
25
40
 
26
41
  def process_stylesheets_assets
27
42
  main_content = ''
28
- get_less_paths.each do |path, sha|
43
+ semantic_ui_less_paths.each do |path, sha|
29
44
  content = ''
30
- get_less_files(sha).each do |name|
45
+ semantic_ui_less_files(sha).each do |name|
31
46
  file_name = name.gsub('.less', '')
32
-
33
- if name.include?('.less') && @paths.include?(path)
34
- file = open_git_file("https://raw.github.com/jlukic/Semantic-UI/master/src/#{path}/#{name}")
35
- file = convert(file)
36
- save_file(name, file, path)
37
- content += "@import '#{file_name}';\n"
38
- end
39
-
40
- end
41
-
42
- if @paths.include?(path)
43
- save_file('all', content, path)
44
- main_content += "@import 'semantic-ui/#{path}/all';\n";
47
+ file = open_git_file("#{@git_raw_src}/#{path}/#{name}")
48
+ file = convert(file)
49
+ save_file(name, file, path)
50
+ content += "@import '#{file_name}';\n"
45
51
  end
52
+ save_file('all', content, path)
53
+ main_content += "@import 'semantic-ui/#{path}/all';\n";
46
54
  end
47
- file = "app/assets/stylesheets/semantic-ui.scss"
48
- f = File.open(file, "w+")
49
- f.write(main_content)
50
- f.close
55
+ File.open("app/assets/stylesheets/semantic-ui.scss", "w+") { |file| file.write(main_content) }
51
56
  end
52
57
 
53
58
  def process_javascript_assets
54
- get_less_paths.each do |path, sha|
55
- content = ''
56
- get_less_files(sha).each do |name|
59
+ content = ''
60
+ semantic_ui_js_paths.each do |path, sha|
61
+ semantic_ui_js_files(sha).each do |name|
57
62
  file_name = name.gsub('.js', '')
58
- # Copy javascripts
59
- if path == 'modules' && name.include?('.js')
60
- file = open_git_file("https://raw.github.com/jlukic/Semantic-UI/master/src/#{path}/#{name}")
61
- save_file(name, file, path, 'js')
63
+ if path == 'modules'
64
+ file = open_git_file("#{@git_raw_src}/#{path}/#{name}")
65
+ save_file(name, file, nil, 'js')
62
66
  content += "//= require semantic-ui/#{file_name}\n"
67
+ else
68
+ file = open_git_file("#{@git_raw_src}/modules/behavior/#{name}")
69
+ save_file(name, file, 'behavior', 'js')
70
+ content += "//= require semantic-ui/behavior/#{file_name}\n"
63
71
  end
64
72
  end
65
- if path == 'modules'
66
- file = "app/assets/javascripts/semantic-ui.js"
67
- f = File.open(file, "w+")
68
- f.write(content)
69
- f.close
70
- end
71
73
  end
74
+ File.open("app/assets/javascripts/semantic-ui.js", "w+") { |file| file.write(content) }
72
75
  end
73
76
 
74
77
  def process_images_and_fonts_assets
75
- get_less_paths.each do |path, sha|
76
-
77
- get_less_files(sha).each do |name|
78
+ semantic_ui_fonts_images_paths.each do |path, sha|
79
+ semantic_ui_fonts_images_files(sha).each do |name|
78
80
  file_name = name.gsub('.less', '')
79
- if path == 'images' || path == 'fonts'
80
- file = open_git_file("https://raw.github.com/jlukic/Semantic-UI/master/src/#{path}/#{name}")
81
- save_file(name, file, path, path)
82
- end
81
+ file = open_git_file("#{@git_raw_src}/#{path}/#{name}")
82
+ save_file(name, file, nil, path)
83
83
  end
84
84
  end
85
-
86
85
  end
87
86
 
88
87
 
@@ -91,21 +90,41 @@ private
91
90
  # Get the sha of less branch
92
91
  def get_tree_sha
93
92
  sha = nil
94
- trees = open('https://api.github.com/repos/jlukic/Semantic-UI/git/trees/master').read
95
- trees = JSON.parse trees
93
+ trees = get_json("#{@git_data_trees}/#{@branch}")
96
94
  trees['tree'].find{|t| t['path'] == 'src'}['sha']
97
95
  end
98
96
 
99
- def get_less_paths
100
- paths = open("https://api.github.com/repos/jlukic/Semantic-UI/git/trees/#{get_tree_sha}").read
101
- paths = JSON.parse paths
102
- paths['tree'].select{|f| f['type'] == 'tree' }.map{|f| [f['path'], f['sha']] }
97
+ def semantic_ui_less_paths
98
+ paths = get_json("#{@git_data_trees}/#{get_tree_sha}")
99
+ paths['tree'].select{|f| f['type'] == 'tree' && @less_paths.include?(f['path']) }.map{|f| [f['path'], f['sha']] }
100
+ end
101
+
102
+ def semantic_ui_less_files(sha)
103
+ files = get_json("#{@git_data_trees}/#{sha}")
104
+ files['tree'].select{|f| f['type'] == 'blob' && f['path'] =~ /\.less$/ }.map{|f| f['path'] }
105
+ end
106
+
107
+ def semantic_ui_js_paths
108
+ paths = get_json("#{@git_data_trees}/#{get_tree_sha}")
109
+ paths = paths['tree'].select{|f| f['type'] == 'tree' && @js_paths.include?(f['path']) }.map{|f| [f['path'], f['sha']] }
110
+ behavior_paths = get_json("#{@git_data_trees}/#{paths[0][1]}")
111
+ behavior_paths = behavior_paths['tree'].select{|f| f['type'] == 'tree' && f['path'] == 'behavior' }.map{|f| [f['path'], f['sha']] }
112
+ js_paths = paths + behavior_paths
103
113
  end
104
114
 
105
- def get_less_files(sha)
106
- files = open("https://api.github.com/repos/jlukic/Semantic-UI/git/trees/#{sha}").read
107
- files = JSON.parse files
108
- files['tree'].select{|f| f['type'] == 'blob' }.map{|f| f['path'] }
115
+ def semantic_ui_js_files(sha)
116
+ files = get_json("#{@git_data_trees}/#{sha}")
117
+ files['tree'].select{|f| f['type'] == 'blob' && f['path'] =~ /\.js$/ }.map{|f| f['path'] }
118
+ end
119
+
120
+ def semantic_ui_fonts_images_paths
121
+ paths = get_json("#{@git_data_trees}/#{get_tree_sha}")
122
+ paths['tree'].select{|f| f['type'] == 'tree' && @fonts_images_paths.include?(f['path']) }.map{|f| [f['path'], f['sha']] }
123
+ end
124
+
125
+ def semantic_ui_fonts_images_files(sha)
126
+ files = get_json("#{@git_data_trees}/#{sha}")
127
+ files['tree'].select{|f| f['type'] == 'blob'}.map{|f| f['path'] }
109
128
  end
110
129
 
111
130
 
@@ -138,17 +157,18 @@ private
138
157
  name = name.gsub(/\.less/, '')
139
158
  file = "#{@save_at[:scss]}/#{path}/_#{name}.scss"
140
159
  when 'js', 'images', 'fonts'
141
- name = name
142
- file = "#{@save_at[type.to_sym]}/#{name}"
160
+ file = (path.nil? ? "#{@save_at[type.to_sym]}/#{name}" : "#{@save_at[type.to_sym]}/#{path}/#{name}")
143
161
  end
144
162
  dir = File.dirname(file)
145
- unless File.directory?(file)
146
- FileUtils.mkdir_p(dir)
147
- end
148
- f = File.open(file, "w+")
149
- f.write(content)
150
- f.close
151
- puts "Saved #{name}\n"
163
+ FileUtils.mkdir_p(dir) unless File.directory?(file)
164
+ File.open(file, 'w+') { |f| f.write(content) }
165
+ puts "Saved #{name} at #{path}\n"
166
+ end
167
+
168
+ def get_json(url)
169
+ url += "?access_token=#{TOKEN}" unless TOKEN.nil?
170
+ data = open_git_file(url)
171
+ data = JSON.parse data
152
172
  end
153
173
 
154
174
  def store_version
@@ -232,6 +252,4 @@ private
232
252
  scss.gsub(/^(\$.+);$/, '\1 !default;')
233
253
  end
234
254
 
235
- end
236
-
237
- Converter.new.process
255
+ end
@@ -0,0 +1,29 @@
1
+ description "Semantic UI for Sass"
2
+
3
+ # Stylesheet importing semantic
4
+ stylesheet 'styles.scss'
5
+
6
+ # Other Semantic UI assets
7
+ basedir = '../../app/assets'
8
+ image_dir = "#{basedir}/images/semantic-ui"
9
+ javascript_dir = ["#{basedir}/javascripts/semantic-ui", "#{basedir}/javascripts/semantic-ui/behavior"]
10
+ font_dir = "#{basedir}/fonts/semantic-ui"
11
+
12
+
13
+ Dir[File.join(File.dirname(__FILE__), image_dir, '*.gif')].each do |file|
14
+ filename = File.basename(file)
15
+ image "#{image_dir}/#{filename}", to: "semantic-ui/#{filename}"
16
+ end
17
+
18
+ javascript_dir.each do |dir|
19
+ Dir[File.join(File.dirname(__FILE__), dir, '*.js')].each do |file|
20
+ filename = File.basename(file)
21
+ to_path = dir.include?('behavior') ? "semantic-ui/behavior/#{filename}" : "semantic-ui/#{filename}"
22
+ javascript "#{dir}/#{filename}", to: to_path
23
+ end
24
+ end
25
+
26
+ Dir[File.join(File.dirname(__FILE__), font_dir, '*')].each do |file|
27
+ filename = File.basename(file)
28
+ font "#{font_dir}/#{filename}", to: "semantic-ui/#{filename}"
29
+ end
@@ -0,0 +1 @@
1
+ @import 'semantic-ui';
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semantic-ui-sass
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
  - doabit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-09 00:00:00.000000000 Z
11
+ date: 2013-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,48 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sass-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '3.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '3.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: dotenv
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
55
97
  description: Semantic UI, converted to Sass and ready to drop into Rails.
56
98
  email:
57
99
  - doinsist@gmail.com
@@ -60,6 +102,7 @@ extensions: []
60
102
  extra_rdoc_files: []
61
103
  files:
62
104
  - .gitignore
105
+ - CHANGELOG.md
63
106
  - Gemfile
64
107
  - LICENSE.txt
65
108
  - README.md
@@ -145,11 +188,13 @@ files:
145
188
  - app/assets/stylesheets/semantic-ui/views/_item.scss
146
189
  - app/assets/stylesheets/semantic-ui/views/_list.scss
147
190
  - app/assets/stylesheets/semantic-ui/views/_statistic.scss
148
- - lib/semantic/ui/sass.rb
191
+ - lib/semantic-ui-sass.rb
149
192
  - lib/semantic/ui/sass/engine.rb
150
193
  - lib/semantic/ui/sass/version.rb
151
194
  - semantic-ui-sass.gemspec
152
195
  - tasks/converter.rb
196
+ - templates/project/manifest.rb
197
+ - templates/project/styles.scss
153
198
  homepage: http://github.com/doabit/semantic-ui-sass
154
199
  licenses:
155
200
  - MIT
@@ -1,10 +0,0 @@
1
- require "semantic/ui/sass/version"
2
- require "semantic/ui/sass/engine"
3
-
4
- module Semantic
5
- module Ui
6
- module Sass
7
- # Your code goes here...
8
- end
9
- end
10
- end