Module: Spreadsheeting

Defined in:
lib/webget_ruby_spreadsheeting.rb

Instance Method Summary collapse

Instance Method Details

#export_date(date) ⇒ String

Convert a date to a string format "YYYY/MM/DD"

Parameters:

  • flag (Boolean)

Returns:

  • (String) —

    "+" or "-"



52
53
54
# File 'lib/webget_ruby_spreadsheeting.rb', line 52

def export_date(date)
  date.strftime("%Y/%m/%d")
end

#export_date_or_note(date, note = nil) ⇒ String

Corresponds to import_date_or_note

  • date is non-null => "2007/12/31"
  • date is null => note

Examples:

d=Date.parse('1/1/2007')
export_date_or_note(d,'hello') => '2007-01-01'
export_date_or_note(nil,'hello') => 'hello'

Returns:

  • (String) —

    a date formatted like "2007/12/31" or freeform string note

See Also:



71
72
73
# File 'lib/webget_ruby_spreadsheeting.rb', line 71

def export_date_or_note(date,note=nil)
  return date==nil ? note : export_date(date)
end

#export_flag(flag) ⇒ String

Convert true/false to "+"/"-"

Parameters:

  • flag (Boolean)

Returns:

  • (String) —

    "+" or "-"



21
22
23
# File 'lib/webget_ruby_spreadsheeting.rb', line 21

def export_flag(flag)
  flag ? '+' : '-'
end

#export_flag_or_note(flag, note = nil) ⇒ String

Corresponds to import_flag_or_note

  • flag==true => "+"
  • flag==false => "-"
  • flag==nil => note

Examples:

export_flag_or_note(true,"hello") => "+"
export_flag_or_note(false,"hello") => "-"
export_flag_or_note(nil,"hello") => "hello"

Returns:

  • (String) —

    "+" or "-" or freeform string note

See Also:



42
43
44
# File 'lib/webget_ruby_spreadsheeting.rb', line 42

def export_flag_or_note(flag,note=nil)
  return flag==nil ? note : export_flag(flag)
end

#import_date(input) ⇒ Date

Parse a string to a date, with some cleanup.

Parameters:

  • input (String, #to_s, nil) —

    to parse, e.g. "2007/12/31"

Returns:

  • (Date) —

    the parsed date

See Also:



83
84
85
86
87
88
# File 'lib/webget_ruby_spreadsheeting.rb', line 83

def import_date(input)
  return nil if input==nil
  input_s = input.to_s.strip
  return nil if input==''
  return Date.parse(input_s)
end

#import_date_or_note(input) ⇒ Array<Date, String>

Parse an imput that may be a date (e.g. "2007/12/31") or a note (e.g. freeform text) into an array.

There's a common import use case where a column can be of two types:

  • a date, in a variety of format like "Jan 1, 2008", "1/1/2008", etc.
  • a note, in plain text

Examples:

import_date_or_note('1/1/2007') => [Date(2007,01,01),'']
import_date_or_note('hello') => [nil,'hello']

Parameters:

  • input (Boolean, String, #to_s, nil) —

    typically "Yes", "No", "On", "Off", etc.

Returns:

  • (Array<Date, String>) —

    the parsed output [date, note]

See Also:



107
108
109
110
111
112
113
114
# File 'lib/webget_ruby_spreadsheeting.rb', line 107

def import_date_or_note(input)
  begin
    d=import_date(input)
  rescue
    d=nil
  end
  return d ? [d,''] : [nil,input]
end

#import_flag(input) ⇒ Boolean

Parse various input words (e.g. "Yes", "No", "On", "Off") to true or false.

There's a typical import use case where a column is a boolean, in a variety of formats like "X" for on, "Y" for yes, "T" for true, etc.

We use these rules:

  • x y yes t true on + => true
  • blank n no f false off - => false
  • anything else => nil

Examples:

import_flag("Yes") => true
import_flag("No") => false
import_flag("X") => true
import_flag("") => false
import_flag("Hello") => nil
import_flag(true) => true
import_flag(false) => true
import_flag(nil) => nil

Parameters:

  • input (Boolean, String, #to_s, nil) —

    typically "Yes", "No", "On", "Off", etc.

Returns:

  • (Boolean) —

    the parsed output

See Also:



143
144
145
146
147
148
149
150
151
152
153
# File 'lib/webget_ruby_spreadsheeting.rb', line 143

def import_flag(input)
  return input if (input==true or input==false or input==nil)
  case input.to_s.strip.downcase
  when 'x','y','yes','t','true','on','+'
    return true
  when '','n','no','f','false','off','-'
    return false
  else 
    return nil
  end
end

#import_flag_or_note(input) ⇒ Array<Boolean, String>

Parse an imput that may be a flag (e.g. true/false) or a note (e.g. freeform text) into an array.

There's a typical import use case where a column can contain two different data types:

  • a boolean, in a variety of formats (see import_flag)
  • a note, in plain text

We need to separate these two.

We use these rules:

  • x y yes t true on + => [true, '']
  • blank n no f false off - => [false, '']
  • any other string => [nil, note]
  • nil => [nil, nil]

Examples:

import_flag_or_note("Yes") => [true,""]
import_flag_or_note("No") => [false,""]
import_flag_or_note("X") => [true,""]
import_flag_or_note("") => [false,""]
import_flag_or_note("Hello") => [nil,"Hello"]
import_flag_or_note(true) => [true,""]
import_flag_or_note(false) => [false,""]
import_flag_or_note(nil) => [nil,nil]

Parameters:

  • input (Boolean, String, #to_s, nil) —

    typically "Yes", "No", "On", "Off", etc.

Returns:

  • (Array<Boolean, String>) —

    the parsed output [flag, note]

See Also:



187
188
189
190
191
# File 'lib/webget_ruby_spreadsheeting.rb', line 187

def import_flag_or_note(input)
  return [nil, nil] if (input==nil)
  flag = import_flag(input)
  return [flag, flag==nil ? input : '']
end