cssensible 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +11 -0
- data/README.md +18 -5
- data/lib/cssensible/finder.rb +49 -27
- data/lib/cssensible/version.rb +1 -1
- data/lib/cssensible/vertical_grid.rb +18 -3
- metadata +4 -4
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.3.0 (July 27th, 2010)
|
4
|
+
|
5
|
+
* improved returned grids (multiple line-heights within one result that still make up the same grid)
|
6
|
+
* cleaner output
|
7
|
+
|
8
|
+
|
9
|
+
## 0.2.2 (July 19th, 2010)
|
10
|
+
|
11
|
+
* fixed bug that made everything explode once --line-height was NOT used
|
12
|
+
|
13
|
+
|
3
14
|
## 0.2.1 (July 17th, 2010)
|
4
15
|
|
5
16
|
* fixed bug that made everything explode once --line-height was used
|
data/README.md
CHANGED
@@ -28,18 +28,31 @@ Options:
|
|
28
28
|
# finds sensible grids including a font-size of 12px
|
29
29
|
$ cssensible 12
|
30
30
|
|
31
|
+
|
31
32
|
# finds sensible grids including both 12px and 16px
|
32
33
|
$ cssensible 12 16
|
33
34
|
|
34
|
-
|
35
|
+
|
36
|
+
# finds sensible grids including 12px, 15px and 16px where the resulting
|
35
37
|
# line-height for every font-size is at least 1.3em
|
36
|
-
$ cssensible --line-height 1.3 12 16
|
38
|
+
$ cssensible --line-height 1.3 12 15 16
|
39
|
+
|
40
|
+
line-height: 12px (9 font-sizes)
|
41
|
+
|
42
|
+
font-size (px) | line-height (px) | line-height (em)
|
43
|
+
------------------+--------------------+--------------------
|
44
|
+
10 | 18 | 1.8
|
45
|
+
12* | 18 | 1.5
|
46
|
+
15* | 24 | 1.6
|
47
|
+
16* | 24 | 1.5
|
48
|
+
20 | 30 | 1.5
|
49
|
+
24 | 36 | 1.5
|
50
|
+
25 | 36 | 1.44
|
51
|
+
28 | 42 | 1.5
|
52
|
+
30 | 42 | 1.4
|
37
53
|
|
38
54
|
|
39
|
-
## Documentation
|
40
55
|
|
41
|
-
View the HTML document:
|
42
|
-
$ open doc/index.html
|
43
56
|
|
44
57
|
## Problems?
|
45
58
|
|
data/lib/cssensible/finder.rb
CHANGED
@@ -5,7 +5,7 @@ require_relative 'vertical_grid'
|
|
5
5
|
module CSSensible
|
6
6
|
class Finder
|
7
7
|
# A line-height should be at least this em-value to improve readability.
|
8
|
-
|
8
|
+
MIN_LINE_HEIGHT_EM_VALUE = EmValue.new(1.3)
|
9
9
|
|
10
10
|
# Size in pixel a font should at least be to be readable
|
11
11
|
MIN_FONT_SIZE_PX = 10
|
@@ -13,56 +13,78 @@ module CSSensible
|
|
13
13
|
attr_reader :font_size
|
14
14
|
|
15
15
|
# Returns a new Vertical Grid Finder based on the font size passed to new.
|
16
|
-
def initialize(font_sizes, min_line_height_em)
|
16
|
+
def initialize(font_sizes, min_line_height_em = MIN_LINE_HEIGHT_EM_VALUE)
|
17
17
|
@font_sizes = font_sizes.sort
|
18
|
-
|
19
|
-
# TODO this is probably wrong
|
20
|
-
@min_line_height_em = min_line_height_em || 1.0
|
18
|
+
@min_line_height_em = min_line_height_em
|
21
19
|
end
|
22
20
|
|
23
21
|
# Finds sensible vertical grids based on the parameters given in new.
|
24
22
|
def find
|
25
23
|
vertical_grids = []
|
26
|
-
line_heights = []
|
27
24
|
|
28
|
-
#
|
29
|
-
|
30
|
-
|
25
|
+
# for the first iteration, all line-heights from the smallest font-size
|
26
|
+
# to two times the largest font-size are potentially possible
|
27
|
+
line_heights = (@font_sizes.first .. @font_sizes.last * 2).to_a
|
31
28
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
# go through required font-sizes and identify all line-heights that work
|
30
|
+
# with all of them
|
31
|
+
@font_sizes.each do |font_size|
|
32
|
+
possible_line_heights = []
|
36
33
|
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
# keep line-height if it can be expressed in valid 'em' for this
|
35
|
+
# font-size
|
36
|
+
line_heights.each do |line_height|
|
37
|
+
if EmValue.new(line_height / font_size.to_f).usable?
|
38
|
+
possible_line_heights << line_height
|
40
39
|
end
|
41
40
|
end
|
42
41
|
|
43
|
-
|
42
|
+
# for next iteration, only check line-heights that work with this
|
43
|
+
# font-size
|
44
|
+
line_heights = possible_line_heights
|
44
45
|
end
|
45
46
|
|
46
47
|
line_heights.each do |line_height|
|
48
|
+
base_line_height = line_height
|
47
49
|
font_sizes_to_line_height = {}
|
48
50
|
|
49
|
-
|
51
|
+
# we will increment the line-height as soon as a resulting em-value
|
52
|
+
# falls underneath @min_line_height_em; to prevent large differences, we
|
53
|
+
# add half of our base line-height if possible
|
54
|
+
if line_height.even?
|
55
|
+
line_height_increment = line_height / 2
|
56
|
+
else
|
57
|
+
line_height_increment = line_height
|
58
|
+
end
|
59
|
+
|
60
|
+
# to offer a larger range of available font-sizes, we start from the
|
61
|
+
# smallest possible font-size and end at don't just end at the biggest
|
62
|
+
# supplied font-size
|
63
|
+
(MIN_FONT_SIZE_PX .. @font_sizes.last * 2).each do |font_size|
|
50
64
|
line_height_em = EmValue.new(line_height / font_size.to_f)
|
51
|
-
|
65
|
+
|
66
|
+
# increment line-height if we fall below the minimum value
|
67
|
+
if line_height_em < @min_line_height_em
|
68
|
+
line_height += line_height_increment
|
69
|
+
redo
|
70
|
+
end
|
71
|
+
|
72
|
+
# map font-size and line-height for this grid
|
73
|
+
if line_height_em.usable? && line_height_em >= @min_line_height_em
|
74
|
+
font_sizes_to_line_height[font_size] = line_height_em
|
75
|
+
end
|
52
76
|
end
|
53
77
|
|
54
|
-
|
55
|
-
|
78
|
+
# add grid to results
|
79
|
+
# TODO can font_sizes_to_line_height ever really be empty?
|
80
|
+
unless font_sizes_to_line_height.empty?
|
81
|
+
vertical_grid = VerticalGrid.new(@font_sizes, base_line_height,
|
82
|
+
font_sizes_to_line_height)
|
83
|
+
vertical_grids << vertical_grid
|
56
84
|
end
|
57
85
|
end
|
58
86
|
|
59
87
|
vertical_grids
|
60
|
-
|
61
|
-
# line_heights = {}
|
62
|
-
# (fontsize .. fontsize * 2).each do |lineheight|
|
63
|
-
# lineheight_ratio = EmValue.new(lineheight / fontsize.to_f)
|
64
|
-
# line_heights[lineheight] = lineheight_ratio if lineheight_ratio.usable?
|
65
|
-
# end
|
66
88
|
end
|
67
89
|
end
|
68
90
|
end
|
data/lib/cssensible/version.rb
CHANGED
@@ -15,11 +15,26 @@ module CSSensible
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def to_s
|
18
|
-
vertical_grid = "line-height: #{@line_height}px
|
19
|
-
vertical_grid += "#{@font_sizes_to_line_height.size} font-
|
18
|
+
vertical_grid = "line-height: #{@line_height}px"
|
19
|
+
vertical_grid += " (#{@font_sizes_to_line_height.size} font-sizes)\n"
|
20
|
+
|
21
|
+
vertical_grid += "\n"
|
22
|
+
|
23
|
+
vertical_grid += "font-size (px)".center(18)
|
24
|
+
vertical_grid += "|"
|
25
|
+
vertical_grid += "line-height (px)".center(20)
|
26
|
+
vertical_grid += "|"
|
27
|
+
vertical_grid += "line-height (em)".center(20)
|
28
|
+
vertical_grid += "\n"
|
29
|
+
vertical_grid += "------------------+--------------------+--------------------\n"
|
20
30
|
|
21
31
|
@font_sizes_to_line_height.each do |font_size, line_height_em|
|
22
|
-
vertical_grid += "
|
32
|
+
vertical_grid += " #{font_size}#{'*' if @base_font_sizes.include?(font_size)}".ljust(18)
|
33
|
+
vertical_grid += "|"
|
34
|
+
vertical_grid += " #{(font_size * line_height_em).to_i}".ljust(20)
|
35
|
+
vertical_grid += "|"
|
36
|
+
vertical_grid += " #{line_height_em}".ljust(20)
|
37
|
+
vertical_grid += "\n"
|
23
38
|
end
|
24
39
|
|
25
40
|
vertical_grid
|
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dominik Habersack
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-27 00:00:00 +12:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|