Module: Prawn

Extended by:
Prawn
Included in:
Prawn
Defined in:
lib/prawn/stamp.rb,
lib/prawn/core.rb,
lib/prawn/font.rb,
lib/prawn/errors.rb,
lib/prawn/images.rb,
lib/prawn/document.rb,
lib/prawn/encoding.rb,
lib/prawn/font/afm.rb,
lib/prawn/font/ttf.rb,
lib/prawn/graphics.rb,
lib/prawn/name_tree.rb,
lib/prawn/reference.rb,
lib/prawn/font/dfont.rb,
lib/prawn/images/jpg.rb,
lib/prawn/images/png.rb,
lib/prawn/pdf_object.rb,
lib/prawn/byte_string.rb,
lib/prawn/measurements.rb,
lib/prawn/object_store.rb,
lib/prawn/document/span.rb,
lib/prawn/document/text.rb,
lib/prawn/graphics/dash.rb,
lib/prawn/graphics/color.rb,
lib/prawn/literal_string.rb,
lib/prawn/document/snapshot.rb,
lib/prawn/document/text/box.rb,
lib/prawn/document/internals.rb,
lib/prawn/graphics/cap_style.rb,
lib/prawn/document/column_box.rb,
lib/prawn/graphics/join_style.rb,
lib/prawn/document/annotations.rb,
lib/prawn/document/bounding_box.rb,
lib/prawn/document/destinations.rb,
lib/prawn/graphics/transparency.rb,
lib/prawn/document/page_geometry.rb,
lib/prawn/document/text/wrapping.rb

Overview

wrapping.rb : Implementation of naive text wrap

Copyright May 2008, Michael Daines. All Rights Reserved.

This is free software. Please see the LICENSE and COPYING files for details.

Defined Under Namespace

Modules: Configurable, Encoding, Errors, Graphics, Images, Measurements, NameTree, Stamp Classes: ByteString, Document, Font, LiteralString, ObjectStore, Reference

Constant Summary collapse

BASEDIR =

The base source directory for Prawn as installed on the system

File.expand_path(File.join(dir, '..', '..'))
VERSION =
"0.6.1"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#debugObject

Whe set to true, Prawn will verify hash options to ensure only valid keys are used. Off by default.

Example:

>> Prawn::Document.new(:tomato => "Juicy")
Prawn::Errors::UnknownOption: 
Detected unknown option(s): [:tomato]
Accepted options are: [:page_size, :page_layout, :left_margin, ...]


41
42
43
# File 'lib/prawn/core.rb', line 41

def debug
  @debug
end

Class Method Details

.PdfObject(obj, in_content_stream = false) ⇒ Object

Serializes Ruby objects to their PDF equivalents. Most primitive objects will work as expected, but please note that Name objects are represented by Ruby Symbol objects and Dictionary objects are represented by Ruby hashes (keyed by symbols)

Examples:

   PdfObject(true)      #=> "true"
   PdfObject(false)     #=> "false" 
   PdfObject(1.2124)    #=> "1.2124"
   PdfObject("foo bar") #=> "(foo bar)"  
   PdfObject(:Symbol)   #=> "/Symbol"
   PdfObject(["foo",:bar, [1,2]]) #=> "[foo /bar [1 2]]"


31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/prawn/pdf_object.rb', line 31

def PdfObject(obj, in_content_stream = false)
  case(obj)        
  when NilClass   then "null" 
  when TrueClass  then "true"
  when FalseClass then "false"
  when Numeric    then String(obj)
  when Array
    "[" << obj.map { |e| PdfObject(e, in_content_stream) }.join(' ') << "]"
  when Prawn::LiteralString
    obj = obj.gsub(/[\\\n\(\)]/) { |m| "\\#{m}" }
    "(#{obj})"
  when Time
    obj = obj.strftime("D:%Y%m%d%H%M%S%z").chop.chop + "'00'"
    obj = obj.gsub(/[\\\n\(\)]/) { |m| "\\#{m}" }
    "(#{obj})"
  when Prawn::ByteString
    "<" << obj.unpack("H*").first << ">"
  when String
    obj = "\xFE\xFF" + obj.unpack("U*").pack("n*") unless in_content_stream
    "<" << obj.unpack("H*").first << ">"
  when Symbol                                                         
     if (obj = obj.to_s) =~ /\s/
       raise Prawn::Errors::FailedObjectConversion, 
         "A PDF Name cannot contain whitespace"  
     else
       "/" << obj   
     end 
  when Hash           
    output = "<< "
    obj.each do |k,v|                                                        
      unless String === k || Symbol === k
        raise Prawn::Errors::FailedObjectConversion, 
          "A PDF Dictionary must be keyed by names"
      end                          
      output << PdfObject(k.to_sym, in_content_stream) << " " << 
                PdfObject(v, in_content_stream) << "\n"
    end   
    output << ">>"  
  when Prawn::Reference
    obj.to_s      
  when Prawn::NameTree::Node
    PdfObject(obj.to_hash)
  when Prawn::NameTree::Value
    PdfObject(obj.name) + " " + PdfObject(obj.value)
  else
    raise Prawn::Errors::FailedObjectConversion, 
      "This object cannot be serialized to PDF"
  end     
end

.Reference(*args, &block) ⇒ Object

:nodoc:



68
69
70
# File 'lib/prawn/reference.rb', line 68

def Reference(*args, &block) #:nodoc:
  Reference.new(*args, &block)
end

Instance Method Details

#verify_options(accepted, actual) ⇒ Object

:nodoc:



43
44
45
46
47
48
49
50
51
52
# File 'lib/prawn/core.rb', line 43

def verify_options(accepted,actual) #:nodoc:
  return unless debug || $DEBUG
  require "set"
  unless (act=Set[*actual.keys]).subset?(acc=Set[*accepted])
    raise Prawn::Errors::UnknownOption,
      "\nDetected unknown option(s): #{(act - acc).to_a.inspect}\n" <<
      "Accepted options are: #{accepted.inspect}"
  end
  yield if block_given?
end