semantic-ui-sass 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: 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