html_skeleton 0.3.6 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 257a4b33a0eeab346e831a3fbc7c68f32d1fb9e80abf203f3211b1ed8c020c3a
4
+ data.tar.gz: 64bb363bc93a4e2d9ea2a035daf45a1a25db7c90944b32ee6116789cea5038de
5
+ SHA512:
6
+ metadata.gz: 05b1b6a13f30ff52c60ba2da4ef461feb82f2b1220b54e08583e84fdf5b010073ff7c928d63d503ae909c3d4390bcaacc1b4a454d8d5d03bff0c2bb8a4df06a8
7
+ data.tar.gz: 2b8c3c6a928688b71ddf6191c6fe531ba95afef11a245f4f37b76518c1760733da9b381a2fd5255bb8d3a7e1660559fe546ac841f34b36677533a0948b98d528
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2012 Dittmar Krall - http://matique.de
1
+ Copyright 2012-2021 Dittmar Krall - www.matique.com
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  HtmlSkeleton
2
2
  ============
3
+ [![Gem Version](https://badge.fury.io/rb/html_skeleton.png)](http://badge.fury.io/rb/html_skeleton)
3
4
 
4
5
  HtmlSkeleton provides the frame for a calendar or a table,
5
6
  i.e. no loops are required to build up the HTML structure.
@@ -28,8 +29,8 @@ In the example below clicking a day triggers an action.
28
29
  Examples
29
30
  --------
30
31
  HtmlSkeleton.new.calendar # calendar for current year
31
- HtmlSkeleton.new.calendar :year = 2012 # calendar for year 2012
32
- HtmlSkeleton.new.calendar :year = 2012, :month => 8 # calendar for August 2012
32
+ HtmlSkeleton.new.calendar year: 2012 # calendar for year 2012
33
+ HtmlSkeleton.new.calendar year: 2012, month: 8 # calendar for August 2012
33
34
 
34
35
  HtmlSkeleton.new.calendar {|date|
35
36
  link ="/#{controller_name}/toggle/#{@resource.id}?date=#{date}"
@@ -40,14 +41,15 @@ Examples
40
41
 
41
42
  Default Options
42
43
  ---------------
43
- :year => DateTime.now.year,
44
- :title => DateTime.now.year,
45
- :calendar_class => 'skeleton',
46
- :day_names => Date::DAYNAMES.dup,
47
- :month_names => Date::MONTHNAMES,
48
- :abbrev => (0..1),
49
- :cell_proc => block || lambda {|d| d.day.to_s},
50
- :first_day_of_week => 1
44
+ year: DateTime.now.year,
45
+ title: DateTime.now.year,
46
+ rows: 3,
47
+ calendar_class: 'skeleton',
48
+ day_names: Date::DAYNAMES.dup,
49
+ month_names: Date::MONTHNAMES,
50
+ abbrev: (0..1),
51
+ cell_proc: block || ->(d) { d.day.to_s},
52
+ first_day_of_week: 1
51
53
 
52
54
 
53
55
  Inspired by calendar_helper:
@@ -73,28 +75,28 @@ Examples
73
75
  }
74
76
 
75
77
  HtmlSkeleton.new.table(@users, %w{email address},
76
- :th_attribute => lambda { |col| col.name },
77
- :legend => 'Users') { |row, col|
78
+ th_attribute: lambda { |col| col.name },
79
+ legend: 'Users') { |row, col|
78
80
  "<td>#{ row.send(col) }</td>"
79
81
  }
80
82
 
81
83
  stripes = %w{odd even}
82
- proc = lambda{ |row| k = stripes.shift; stripes << k; %Q{class="#{k}"} }
84
+ proc = ->(row) { k = stripes.shift; stripes << k; %Q{class="#{k}"} }
83
85
  HtmlSkeleton.new.table(@users, %w{email address},
84
- :tr_attribute => proc,
85
- :legend => 'Users') { |row, col|
86
+ tr_attribute: proc,
87
+ legend: 'Users') { |row, col|
86
88
  "<td>#{ row.send(col) }</td>"
87
89
  }
88
90
 
89
91
  Default Options
90
92
  ---------------
91
- :legend => nil,
92
- :col_legend => lambda(&:to_s),
93
- :row_legend => lambda(&:id),
94
- :th_attribute => lambda { |col| nil },
95
- :tr_attribute => lambda { |row| nil },
96
- :table_class => 'skeleton',
97
- :cell_proc => block || lambda {|row, col| "<td>#{row} #{col}</td>"}
93
+ legend: nil,
94
+ col_legend: lambda(&:to_s),
95
+ row_legend: lambda(&:id),
96
+ th_attribute: ->(col) { nil },
97
+ tr_attribute: ->(row) { nil },
98
+ table_class: 'skeleton',
99
+ cell_proc: block || ->(row, col) { "<td>#{row} #{col}</td>"}
98
100
 
99
101
 
100
102
  Curious?
@@ -108,4 +110,4 @@ Curious?
108
110
  github.com/watu/table_builder
109
111
  ruby-toolbox.com/projects/tableasy
110
112
 
111
- Copyright (c) 2012 [Dittmar Krall], released under the MIT license.
113
+ Copyright (c) 2012-2019 [Dittmar Krall], released under the MIT license.
data/lib/html_skeleton.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'date'
2
4
  require 'html_skeleton_calendar'
3
5
  require 'html_skeleton_table'
@@ -7,35 +9,34 @@ class HtmlSkeleton
7
9
 
8
10
  def calendar(options = {}, &block)
9
11
  set_calendar_options(options, &block)
10
- frame = @options[:month] ? 'div' : 'table'
11
- body = @options[:month] ?
12
- a_month(@options[:year], @options[:month]) :
13
- a_year(@options[:year])
14
- %Q{<#{frame} class="#{@options[:calendar_class]}"> #{body} </#{frame}>}
12
+ month = @options[:month]
13
+ frame = month ? 'div' : 'table'
14
+ body = month ? a_month(@options[:year], month) : a_year(@options[:year])
15
+ %(<#{frame} class="#{@options[:calendar_class]}"> #{body} </#{frame}>)
15
16
  end
16
17
 
17
18
  def table(rows, cols, options = {}, &block)
18
19
  set_table_options(options, &block)
19
- <<-EOS
20
- <table class="#{@options[:table_class]}">
21
- #{table_header(cols)}
22
- #{table_body(rows, cols)}
23
- </table>
24
- EOS
20
+ <<~TABLE
21
+ <table class="#{@options[:table_class]}">
22
+ #{table_header(cols)}
23
+ #{table_body(rows, cols)}
24
+ </table>
25
+ TABLE
25
26
  end
26
27
 
27
-
28
28
  protected
29
29
  def set_calendar_options(options, &block)
30
30
  year = DateTime.now.year
31
31
  @options = {
32
- :year => year,
33
- :title => year,
34
- :calendar_class => 'skeleton',
35
- :month_names => Date::MONTHNAMES,
36
- :abbrev => (0..1),
37
- :cell_proc => block || lambda {|d| d.day.to_s},
38
- :first_day_of_week => 1
32
+ year: year,
33
+ title: year,
34
+ rows: 3,
35
+ calendar_class: 'skeleton',
36
+ month_names: Date::MONTHNAMES,
37
+ abbrev: (0..1),
38
+ cell_proc: block || ->(d) { d.day.to_s },
39
+ first_day_of_week: 1
39
40
  }.merge options
40
41
 
41
42
  names = options[:day_names] || Date::DAYNAMES.dup
@@ -43,22 +44,21 @@ class HtmlSkeleton
43
44
 
44
45
  @day_header = names.collect { |day|
45
46
  abbr = day[@options[:abbrev]]
46
- str = abbr == day ? day : %Q{<abbr title='#{day}'>#{abbr}</abbr>}
47
- %Q{<th scope='col'>#{str}</th>}
47
+ str = abbr == day ? day : %(<abbr title="#{day}">#{abbr}</abbr>)
48
+ %(<th scope="col">#{str}</th>)
48
49
  }.join('')
49
50
  end
50
51
 
51
52
  def set_table_options(options, &block)
52
53
  @options = {
53
- :legend => nil,
54
- :col_legend => lambda(&:to_s),
55
- :row_legend => lambda(&:id),
56
- :th_attribute => lambda { |col| nil },
57
- :tr_attribute => lambda { |row| nil },
54
+ legend: nil,
55
+ col_legend: lambda(&:to_s),
56
+ row_legend: lambda(&:id),
57
+ th_attribute: ->(_col) { nil },
58
+ tr_attribute: ->(_row) { nil },
58
59
 
59
- :table_class => 'skeleton',
60
- :cell_proc => block || lambda {|row, col| "<td>#{row} #{col}</td>"},
60
+ table_class: 'skeleton',
61
+ cell_proc: block || ->(row, col) { "<td>#{row} #{col}</td>" }
61
62
  }.merge options
62
63
  end
63
-
64
64
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'date'
2
4
 
3
5
  # calendar methods ###################################################
@@ -6,41 +8,44 @@ class HtmlSkeleton
6
8
 
7
9
  protected
8
10
  def a_year(year)
9
- rows, cols = 3, 4
10
- body = (0..rows - 1).collect {|y|
11
- str = (1..cols).collect {|x| "<td>#{a_month(year, y * cols + x)}</td>"}
11
+ rows = @options[:rows]
12
+ cols = 12 / rows
13
+ raise 'html_skeleton_calendar: invalid option <rows>' unless rows * cols == 12
14
+
15
+ body = (0..rows - 1).collect { |y|
16
+ str = (1..cols).collect { |x| "<td>#{a_month(year, y * cols + x)}</td>" }
12
17
  "<tr>#{str.join('')}</tr>"
13
18
  }
14
- <<-EOS
15
- <thead><th colspan="2">#{@options[:title]}</th></thead>
16
- #{body.join('')}
17
- EOS
19
+ <<~THEAD
20
+ <thead><th colspan="2">#{@options[:title]}</th></thead>
21
+ #{body.join('')}
22
+ THEAD
18
23
  end
19
24
 
20
25
  def a_month(year, month)
21
26
  title = @options[:month_names][month]
22
- <<-EOS
23
- <table class="month">
24
- <tr class="monthName"><th colspan="7">#{title}</th></tr>
25
- <tr class="dayName">#{@day_header}</tr>
26
- #{days_of_month(year, month)}
27
- </table>
28
- EOS
27
+ <<~TABLE
28
+ <table class="month">
29
+ <tr class="monthName"><th colspan="7">#{title}</th></tr>
30
+ <tr class="dayName">#{@day_header}</tr>
31
+ #{days_of_month(year, month)}
32
+ </table>
33
+ TABLE
29
34
  end
30
35
 
31
36
  def days_of_month(year, month)
32
37
  first_weekday = @options[:first_day_of_week]
33
- last_weekday = first_weekday > 0 ? first_weekday - 1 : 6
38
+ last_weekday = first_weekday.positive? ? first_weekday - 1 : 6
34
39
  cell_proc = @options[:cell_proc]
35
- today = (Time.respond_to?(:zone) &&
36
- !(zone = Time.zone).nil? ? zone.now.to_date : Date.today)
40
+ bool = Time.respond_to?(:zone) && !(zone = Time.zone).nil?
41
+ today = bool ? zone.now.to_date : Date.today
37
42
 
38
43
  first = Date.civil(year, month, 1)
39
44
  last = Date.civil(year, month, -1)
40
45
 
41
- cal = '<tr>'
46
+ cal = '<tr>'.dup
42
47
  cal << '<td></td>' * days_between(first_weekday, first.wday)
43
- first.upto(last) {|cur|
48
+ first.upto(last) { |cur|
44
49
  cal << a_day(cur, today, cell_proc)
45
50
  cal << '</tr> <tr>' if cur.wday == last_weekday
46
51
  }
@@ -53,9 +58,8 @@ class HtmlSkeleton
53
58
  attrs += ' weekendDay' if weekend?(date)
54
59
  attrs += ' today' if date == today
55
60
  "<td class=\"#{attrs}\">#{block.call(date)}</td>"
56
- # "<td class=\"#{attrs}\">##</td>"
57
61
  end
58
-
62
+
59
63
  def weekend?(date)
60
64
  [0, 6].include?(date.wday)
61
65
  end
@@ -63,5 +67,4 @@ class HtmlSkeleton
63
67
  def days_between(first, second)
64
68
  first > second ? second + (7 - first) : second - first
65
69
  end
66
-
67
70
  end
@@ -1,18 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'date'
2
4
 
3
5
  # table methods ######################################################
4
6
  class HtmlSkeleton
5
- protected
7
+ protected
6
8
  def table_header(cols)
7
9
  legend = @options[:legend]
8
10
  th_attribute = @options[:th_attribute]
9
- return '' unless legend
11
+ return '' unless legend
10
12
 
11
13
  proc = @options[:col_legend]
12
14
  col_header = cols.collect { |col|
13
15
  "<th #{th_attribute.call(col)}>#{proc.call(col)}</th>"
14
16
  }.join
15
- %Q{<thead><th class="legend">#{legend}</th>#{col_header}</thead>}
17
+ %(<thead><th class="legend">#{legend}</th>#{col_header}</thead>)
16
18
  end
17
19
 
18
20
  def table_body(rows, cols)
@@ -20,10 +22,10 @@ class HtmlSkeleton
20
22
  row_legend = @options[:row_legend]
21
23
  tr_attribute = @options[:tr_attribute]
22
24
  rows.collect { |row|
23
- rlegend = legend ? %Q{<td class="legend">#{row_legend.call(row)}</td>}
24
- : ''
25
+ rlegend = ''
26
+ rlegend = %(<td class="legend">#{row_legend.call(row)}</td>) if legend
25
27
  cells = table_row(row, cols)
26
- %Q{<tr #{tr_attribute.call(row)}>#{rlegend}#{cells}</tr>}
28
+ %(<tr #{tr_attribute.call(row)}>#{rlegend}#{cells}</tr>)
27
29
  }.join("\n")
28
30
  end
29
31
 
@@ -31,5 +33,4 @@ class HtmlSkeleton
31
33
  cell_proc = @options[:cell_proc]
32
34
  cols.collect { |col| cell_proc.call(row, col) }.join('')
33
35
  end
34
-
35
36
  end
metadata CHANGED
@@ -1,64 +1,82 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html_skeleton
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
5
- prerelease:
4
+ version: 0.5.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dittmar Krall
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-09-15 00:00:00.000000000 +02:00
13
- default_executable:
11
+ date: 2021-02-09 00:00:00.000000000 Z
14
12
  dependencies:
15
13
  - !ruby/object:Gem::Dependency
16
- name: rake
17
- requirement: &84688390 !ruby/object:Gem::Requirement
18
- none: false
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
19
23
  requirements:
20
- - - ! '>='
24
+ - - ">="
21
25
  - !ruby/object:Gem::Version
22
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13'
23
34
  type: :development
24
35
  prerelease: false
25
- version_requirements: *84688390
26
- description: ! " A simple helper for creating HTML calendars and tables.\n\n An
27
- example in a view: <%= HtmlSkeleton.new.calendar %>\n\n The calendar/table may
28
- be embelished by user supplied lambda's,\n e.g. for inserting link_to.\n"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '13'
41
+ description: |2
42
+ A simple helper for creating HTML calendars and tables.
43
+
44
+ An example in a view: <%= HtmlSkeleton.new.calendar %>
45
+
46
+ The calendar/table may be embelished by user supplied lambda's,
47
+ e.g. for inserting link_to.
29
48
  email: dittmar.krall@matique.de
30
49
  executables: []
31
50
  extensions: []
32
51
  extra_rdoc_files: []
33
52
  files:
53
+ - MIT-LICENSE
54
+ - README.md
34
55
  - lib/html_skeleton.rb
35
56
  - lib/html_skeleton_calendar.rb
36
57
  - lib/html_skeleton_table.rb
37
- - README.md
38
- - MIT-LICENSE
39
- has_rdoc: true
40
58
  homepage: http://matique.de
41
- licenses: []
59
+ licenses:
60
+ - MIT
61
+ metadata:
62
+ source_code_uri: https://github.com/matique/html_skeleton
42
63
  post_install_message:
43
64
  rdoc_options: []
44
65
  require_paths:
45
66
  - lib
46
67
  required_ruby_version: !ruby/object:Gem::Requirement
47
- none: false
48
68
  requirements:
49
- - - ! '>='
69
+ - - ">="
50
70
  - !ruby/object:Gem::Version
51
71
  version: '0'
52
72
  required_rubygems_version: !ruby/object:Gem::Requirement
53
- none: false
54
73
  requirements:
55
- - - ! '>='
74
+ - - ">="
56
75
  - !ruby/object:Gem::Version
57
76
  version: '0'
58
77
  requirements: []
59
- rubyforge_project:
60
- rubygems_version: 1.6.2
78
+ rubygems_version: 3.2.6
61
79
  signing_key:
62
- specification_version: 3
80
+ specification_version: 4
63
81
  summary: A simple helper for creating HTML calendars and tables
64
82
  test_files: []