Module: Asciidoctor::PDF::Measurements
- Defined in:
- lib/asciidoctor/pdf/measurements.rb
Constant Summary collapse
- MeasurementValueRx =
/(\d+|\d*\.\d+)(in|mm|cm|p[txc])?$/
- InsetMeasurementValueRx =
/(?<=^| |\()(-?\d+(?:\.\d+)?)(in|mm|cm|p[txc])(?=$| |\))/
- MeasurementValueHintRx =
/\d(in|mm|cm|p[txc])/
Instance Method Summary collapse
-
#resolve_measurement_values(str) ⇒ Object
Resolve measurement values in the string to PDF points.
-
#str_to_pt(val) ⇒ Object
Convert the specified string value to a pt value from the specified unit of measurement (e.g., in, cm, mm, etc).
-
#to_pt(num, units) ⇒ Object
Converts the specified float value to a pt value from the specified unit of measurement (e.g., in, cm, mm, etc).
Instance Method Details
#resolve_measurement_values(str) ⇒ Object
Resolve measurement values in the string to PDF points.
53 54 55 56 57 58 59 |
# File 'lib/asciidoctor/pdf/measurements.rb', line 53 def resolve_measurement_values str if MeasurementValueHintRx.match? str str.gsub(InsetMeasurementValueRx) { to_pt $1.to_f, $2 } else str end end |
#str_to_pt(val) ⇒ Object
Convert the specified string value to a pt value from the specified unit of measurement (e.g., in, cm, mm, etc). If the unit of measurement is not recognized, assume pt.
Examples:
0.5in => 36.0
100px => 75.0
72blah => 72.0
20 21 22 |
# File 'lib/asciidoctor/pdf/measurements.rb', line 20 def str_to_pt val MeasurementValueRx =~ val ? (to_pt $1.to_f, $2) : val.to_f end |
#to_pt(num, units) ⇒ Object
Converts the specified float value to a pt value from the specified unit of measurement (e.g., in, cm, mm, etc). Raises an argument error if the unit of measurement is not recognized.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/asciidoctor/pdf/measurements.rb', line 27 def to_pt num, units units = units.to_s if ::Symbol === units if units.nil_or_empty? num else case units when 'pt' num when 'in' num * 72 when 'mm' num * (72 / 25.4) when 'cm' num * (720 / 25.4) when 'px' # assuming canvas of 96 dpi num * 0.75 when 'pc' num * 12 else raise ::ArgumentError, %(unknown unit of measurement: #{units}) end end end |