filled-seven-rails 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,50 @@
1
+ module FilledSeven
2
+ module Rails
3
+ module IconHelper
4
+ # Creates an icon tag given an icon name and possible icon
5
+ # modifiers.
6
+ #
7
+ # Examples
8
+ #
9
+ # f7_icon "album"
10
+ # # => <i class="pe-7f-album"></i>
11
+ #
12
+ # f7_icon "album", class: "pull-left"
13
+ # # => <i class="pe-7f-album pull-left"></i>
14
+ #
15
+ # f7_icon "album", data: { id: 123 }
16
+ # # => <i class="pe-7f-album" data-id="123"></i>
17
+ #
18
+ # content_tag(:li, f7_icon("album", text: "Bulleted list item"))
19
+ # # => <li><i class="pe-7f-album"></i> Bulleted list item</li>
20
+ def f7_icon(names = "album", options = {})
21
+ classes = []
22
+ classes.concat Private.icon_names(names)
23
+ classes.concat Array(options.delete(:class))
24
+ text = options.delete(:text)
25
+ right_icon = options.delete(:right)
26
+ icon = content_tag(:i, nil, options.merge(:class => classes))
27
+ Private.icon_join(icon, text, right_icon)
28
+ end
29
+
30
+ module Private
31
+ extend ActionView::Helpers::OutputSafetyHelper
32
+
33
+ def self.icon_join(icon, text, reverse_order = false)
34
+ return icon if text.blank?
35
+ elements = [icon, ERB::Util.html_escape(text)]
36
+ elements.reverse! if reverse_order
37
+ safe_join(elements, " ")
38
+ end
39
+
40
+ def self.icon_names(names = [])
41
+ array_value(names).map { |n| "pe-7f-#{n}" }
42
+ end
43
+
44
+ def self.array_value(value = [])
45
+ value.is_a?(Array) ? value : value.to_s.split(/\s+/)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,2 @@
1
+ require "filled-seven-rails/version"
2
+ require "filled-seven-rails/engine" if defined?(::Rails)
@@ -0,0 +1,6 @@
1
+ module FilledSeven
2
+ module Rails
3
+ class Engine < ::Rails::Engine
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module FilledSeven
2
+ module Rails
3
+ F7_VERSION = "1.2.0"
4
+ VERSION = "1.0.2"
5
+ end
6
+ end
@@ -0,0 +1 @@
1
+ @import filled-seven
@@ -0,0 +1 @@
1
+ @import "filled-seven";
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require filled-seven
3
+ */
@@ -0,0 +1,2 @@
1
+ class PagesController < ActionController::Base
2
+ end
@@ -0,0 +1 @@
1
+ <%= f7_icon 'album' %>
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Dummy::Application
@@ -0,0 +1,19 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ # require "rails/all"
4
+ require "sprockets/railtie"
5
+
6
+ Bundler.require(:default, :development)
7
+
8
+ module Dummy
9
+ class Application < Rails::Application
10
+ config.encoding = "utf-8"
11
+ config.assets.enabled = true
12
+ config.assets.version = '1.0'
13
+
14
+ # replacement for environments/*.rb
15
+ config.active_support.deprecation = :stderr
16
+ config.eager_load = false
17
+ config.active_support.test_order = :random rescue nil
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ if File.exist?(gemfile)
5
+ ENV['BUNDLE_GEMFILE'] = gemfile
6
+ require 'bundler'
7
+ Bundler.setup
8
+ end
9
+
10
+ $:.unshift File.expand_path('../../../../lib', __FILE__)
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ Dummy::Application.initialize!
@@ -0,0 +1,8 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+ # Make sure the secret is at least 30 characters and all random,
6
+ # no regular words or you'll be exposed to dictionary attacks.
7
+ Dummy::Application.config.secret_token = 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef'
8
+ Dummy::Application.config.secret_key_base = 'deadbeef' if Dummy::Application.config.respond_to?(:secret_key_base)
@@ -0,0 +1,3 @@
1
+ Dummy::Application.routes.draw do
2
+ get "/icons", :to => "pages#icons"
3
+ end
@@ -0,0 +1,61 @@
1
+ -------------------------------------------------------------------
2
+ FilledSevenRailsTest: test_stylesheet_is_available_in_a_sass_import
3
+ -------------------------------------------------------------------
4
+ Started GET "/assets/sass-import.css" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
5
+ -------------------------------------------------------------------
6
+ FilledSevenRailsTest: test_stylesheet_is_available_in_a_scss_import
7
+ -------------------------------------------------------------------
8
+ Started GET "/assets/scss-import.css" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
9
+ -------------------------------------------
10
+ FilledSevenRailsTest: test_engine_is_loaded
11
+ -------------------------------------------
12
+ ---------------------------------------------------------------------------------
13
+ FilledSevenRailsTest: test_stylesheets_contain_asset_pipeline_references_to_fonts
14
+ ---------------------------------------------------------------------------------
15
+ Started GET "/assets/filled-seven.css" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
16
+ -------------------------------------------
17
+ FilledSevenRailsTest: test_fonts_are_served
18
+ -------------------------------------------
19
+ Started GET "/assets/Pe-icon-7-filled.eot" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
20
+ Started GET "/assets/Pe-icon-7-filled.woff" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
21
+ Started GET "/assets/Pe-icon-7-filled.ttf" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
22
+ Started GET "/assets/Pe-icon-7-filled.svg" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
23
+ ------------------------------------------------------------------
24
+ FilledSevenRailsTest: test_helpers_should_be_available_in_the_view
25
+ ------------------------------------------------------------------
26
+ Started GET "/icons" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
27
+ Processing by PagesController#icons as HTML
28
+ Rendered pages/icons.html.erb (1.4ms)
29
+ Completed 200 OK in 7ms (Views: 7.0ms)
30
+ -----------------------------------------------------------------------------
31
+ FilledSevenRailsTest: test_stylesheet_is_available_in_a_css_sprockets_require
32
+ -----------------------------------------------------------------------------
33
+ Started GET "/assets/sprockets-require.css" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
34
+ -------------------------------------------------
35
+ FilledSevenRailsTest: test_stylesheets_are_served
36
+ -------------------------------------------------
37
+ Started GET "/assets/filled-seven.css" for 127.0.0.1 at 2015-11-01 01:16:14 -0400
38
+ ---------------------------------------------------------------------------------------
39
+ FilledSeven::Rails::IconHelperTest: test_#f7_icon_should_pass_all_other_options_through
40
+ ---------------------------------------------------------------------------------------
41
+ ------------------------------------------------------------------------------------------
42
+ FilledSeven::Rails::IconHelperTest: test_#f7_icon_should_render_different_individual_icons
43
+ ------------------------------------------------------------------------------------------
44
+ ----------------------------------------------------------------------------------
45
+ FilledSeven::Rails::IconHelperTest: test_#f7_icon_should_not_html_escape_safe_text
46
+ ----------------------------------------------------------------------------------
47
+ -------------------------------------------------------------------------
48
+ FilledSeven::Rails::IconHelperTest: test_#f7_icon_should_html_escape_text
49
+ -------------------------------------------------------------------------
50
+ ----------------------------------------------------------------------------------
51
+ FilledSeven::Rails::IconHelperTest: test_#f7_icon_should_incorporate_a_text_suffix
52
+ ----------------------------------------------------------------------------------
53
+ --------------------------------------------------------------------------------------------
54
+ FilledSeven::Rails::IconHelperTest: test_#f7_icon_should_incorporate_additional_class_styles
55
+ --------------------------------------------------------------------------------------------
56
+ ------------------------------------------------------------------------------------------
57
+ FilledSeven::Rails::IconHelperTest: test_#f7_icon_with_no_args_should_render_an_album_icon
58
+ ------------------------------------------------------------------------------------------
59
+ -----------------------------------------------------------------------------
60
+ FilledSeven::Rails::IconHelperTest: test_#f7_icon_should_pull_it_all_together
61
+ -----------------------------------------------------------------------------
@@ -0,0 +1,67 @@
1
+ require 'test_helper'
2
+
3
+ class FilledSevenRailsTest < ActionDispatch::IntegrationTest
4
+ teardown { clean_sprockets_cache }
5
+
6
+ test "engine is loaded" do
7
+ assert_equal ::Rails::Engine, FilledSeven::Rails::Engine.superclass
8
+ end
9
+
10
+ test "fonts are served" do
11
+ get "/assets/Pe-icon-7-filled.eot"
12
+ assert_response :success
13
+ get "/assets/Pe-icon-7-filled.woff"
14
+ assert_response :success
15
+ get "/assets/Pe-icon-7-filled.ttf"
16
+ assert_response :success
17
+ get "/assets/Pe-icon-7-filled.svg"
18
+ assert_response :success
19
+ end
20
+
21
+ test "stylesheets are served" do
22
+ get "/assets/filled-seven.css"
23
+ assert_filled_seven(response)
24
+ end
25
+
26
+ test "stylesheets contain asset pipeline references to fonts" do
27
+ get "/assets/filled-seven.css"
28
+ v = FilledSeven::Rails::F7_VERSION
29
+ assert_match "/assets/Pe-icon-7-filled.eot?v=#{v}", response.body
30
+ assert_match "/assets/Pe-icon-7-filled.eot?#iefix&v=#{v}", response.body
31
+ assert_match "/assets/Pe-icon-7-filled.woff?v=#{v}", response.body
32
+ assert_match "/assets/Pe-icon-7-filled.ttf?v=#{v}", response.body
33
+ assert_match "/assets/Pe-icon-7-filled.svg?v=#{v}#Pe-icon-7-filled", response.body
34
+ end
35
+
36
+ test "stylesheet is available in a css sprockets require" do
37
+ get "/assets/sprockets-require.css"
38
+ assert_filled_seven(response)
39
+ end
40
+
41
+ test "stylesheet is available in a sass import" do
42
+ get "/assets/sass-import.css"
43
+ assert_filled_seven(response)
44
+ end
45
+
46
+ test "stylesheet is available in a scss import" do
47
+ get "/assets/scss-import.css"
48
+ assert_filled_seven(response)
49
+ end
50
+
51
+ test "helpers should be available in the view" do
52
+ get "/icons"
53
+ assert_response :success
54
+ assert_select "i.pe-7f-album"
55
+ end
56
+
57
+ private
58
+
59
+ def clean_sprockets_cache
60
+ FileUtils.rm_rf File.expand_path("../dummy/tmp", __FILE__)
61
+ end
62
+
63
+ def assert_filled_seven(response)
64
+ assert_response :success
65
+ assert_match(/font-family:\s*'Pe-icon-7-filled';/, response.body)
66
+ end
67
+ end
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+
3
+ class FilledSeven::Rails::IconHelperTest < ActionView::TestCase
4
+
5
+ test "#f7_icon with no args should render an album icon" do
6
+ assert_icon i("pe-7f-album")
7
+ end
8
+
9
+ test "#f7_icon should render different individual icons" do
10
+ assert_icon i("pe-7f-album"), "album"
11
+ assert_icon i("pe-7f-female"), "female"
12
+ assert_icon i("pe-7f-magic-wand"), "magic-wand"
13
+ end
14
+
15
+ test "#f7_icon should incorporate additional class styles" do
16
+ assert_icon i("pe-7f-album pull-right"), "album", :class => "pull-right"
17
+ assert_icon i("pe-7f-album pull-right success"), "album", :class => "pull-right success"
18
+ end
19
+
20
+ test "#f7_icon should incorporate a text suffix" do
21
+ assert_icon "#{i("pe-7f-female")} Take a photo", "female", :text => "Take a photo"
22
+ end
23
+
24
+ test "#f7_icon should html escape text" do
25
+ assert_icon "#{i("pe-7f-female")} &lt;script&gt;&lt;/script&gt;", "female", :text => "<script></script>"
26
+ end
27
+
28
+ test "#f7_icon should not html escape safe text" do
29
+ assert_icon "#{i("pe-7f-female")} <script></script>", "female", :text => "<script></script>".html_safe
30
+ end
31
+
32
+ test "#f7_icon should pull it all together" do
33
+ assert_icon "#{i("pe-7f-female pull-right")} Take a photo", "female", :text => "Take a photo", :class => "pull-right"
34
+ end
35
+
36
+ test "#f7_icon should pass all other options through" do
37
+ assert_icon %(<i class="pe-7f-male" data-id="123"></i>), "male", :data => { :id => 123 }
38
+ end
39
+
40
+ private
41
+
42
+ def assert_icon(expected, *args)
43
+ message = "`f7_icon(#{args.inspect[1...-1]})` should return `#{expected}`"
44
+ assert_dom_equal expected, f7_icon(*args), message
45
+ end
46
+
47
+ def i(classes)
48
+ %(<i class="#{classes}"></i>)
49
+ end
50
+ end
@@ -0,0 +1,7 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ Rails.backtrace_cleaner.remove_silencers!
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: filled-seven-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - bimovidia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-11-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: sass-rails
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ description: I like Filled 7 fonts. I like the asset pipeline. I like semantic versioning.
62
+ If you do too, you're welcome.
63
+ email:
64
+ - bimo.wijoyo@gmail.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - LICENSE
70
+ - README.md
71
+ - Rakefile
72
+ - app/assets/fonts/Pe-icon-7-filled.eot
73
+ - app/assets/fonts/Pe-icon-7-filled.svg
74
+ - app/assets/fonts/Pe-icon-7-filled.ttf
75
+ - app/assets/fonts/Pe-icon-7-filled.woff
76
+ - app/assets/stylesheets/filled-seven-helper.css
77
+ - app/assets/stylesheets/filled-seven.css.erb
78
+ - app/helpers/filled_seven/rails/icon_helper.rb
79
+ - lib/filled-seven-rails.rb
80
+ - lib/filled-seven-rails/engine.rb
81
+ - lib/filled-seven-rails/version.rb
82
+ - test/dummy/app/assets/stylesheets/sass-import.css.sass
83
+ - test/dummy/app/assets/stylesheets/scss-import.css.scss
84
+ - test/dummy/app/assets/stylesheets/sprockets-require.css
85
+ - test/dummy/app/controllers/pages_controller.rb
86
+ - test/dummy/app/views/pages/icons.html.erb
87
+ - test/dummy/config.ru
88
+ - test/dummy/config/application.rb
89
+ - test/dummy/config/boot.rb
90
+ - test/dummy/config/environment.rb
91
+ - test/dummy/config/initializers/secret_token.rb
92
+ - test/dummy/config/routes.rb
93
+ - test/dummy/log/test.log
94
+ - test/filled_seven_rails_test.rb
95
+ - test/icon_helper_test.rb
96
+ - test/test_helper.rb
97
+ homepage: https://github.com/bimovidia/filled-seven-rails
98
+ licenses:
99
+ - MIT
100
+ - SIL Open Font License
101
+ metadata: {}
102
+ post_install_message:
103
+ rdoc_options: []
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 1.9.3
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 2.4.3
119
+ signing_key:
120
+ specification_version: 4
121
+ summary: an asset gemification of the Filled 7 icon font library
122
+ test_files:
123
+ - test/dummy/app/assets/stylesheets/sass-import.css.sass
124
+ - test/dummy/app/assets/stylesheets/scss-import.css.scss
125
+ - test/dummy/app/assets/stylesheets/sprockets-require.css
126
+ - test/dummy/app/controllers/pages_controller.rb
127
+ - test/dummy/app/views/pages/icons.html.erb
128
+ - test/dummy/config/application.rb
129
+ - test/dummy/config/boot.rb
130
+ - test/dummy/config/environment.rb
131
+ - test/dummy/config/initializers/secret_token.rb
132
+ - test/dummy/config/routes.rb
133
+ - test/dummy/config.ru
134
+ - test/dummy/log/test.log
135
+ - test/filled_seven_rails_test.rb
136
+ - test/icon_helper_test.rb
137
+ - test/test_helper.rb