class MkMapleHiki::Command

Public Class Methods

new(argv=[]) click to toggle source
# File lib/mk_maple_hiki.rb, line 15
def initialize(argv=[])
  @argv = argv
  @scale = 80
end
run(argv=[]) click to toggle source
# File lib/mk_maple_hiki.rb, line 11
def self.run(argv=[])
  new(argv).execute
end

Public Instance Methods

convert_figures(name) click to toggle source
# File lib/mk_maple_hiki.rb, line 139
def convert_figures(name)
  @src=read_src(name)
  extension = @src[:fig_extension] || '.eps'
  p file_dir =File.join(name,'figures')
  files = Dir.entries(file_dir)
  p target_dir = File.join(@src[:local_site],'cache','attach',File.basename(name))
  FileUtils.mkdir_p(target_dir,:verbose=>true)
  files.each{|file|
    next if File.extname(file) != extension
    p source = File.join(file_dir,file)
    p name = File.basename(file,extension)
    p target = File.join(target_dir,name+'.png')
    p command = "convert #{source} -resize #{@scale}\% #{target}"
    system command
  }
end
execute() click to toggle source
# File lib/mk_maple_hiki.rb, line 20
def execute
  @argv << '--help' if @argv.size==0
  banner = 'For making maple hiki'
  command_parser = OptionParser.new(banner) do |opt|
    opt.on('-v', '--version','show program Version.') { |v|
      opt.version = Latex2hiki::VERSION
      puts opt.ver
    }
    opt.on('--init [NAME]','initialize NAME directory.') { |name|
      name = name || './'
      init(name)
      exit
    }
    opt.on('--figures [NAME]','gather and convert figures in NAME dir.') { |name|
      name = name || './'
      gather_figures(name)
      convert_figures(name)
      exit
    }
    opt.on('--scale [VAL]%','set scale for convert figures.') { |val|
      @scale = val.to_i
    }
    opt.on('--level [VAL]','set level for head start level .') { |val|
      @level = val.to_i
    }
    opt.on('--hiki [NAME]','make hiki contents from NAME directory.') { |name|
      name = name || './'
      @src=read_src(name)
      make_hiki(name)
      exit
    }
  end
  command_parser.parse!(@argv)
  puts NKF.nkf("-w",Latex.new(File.read(ARGV[0])).to_hiki)
  exit
end
gather_figures(name) click to toggle source
# File lib/mk_maple_hiki.rb, line 127
def gather_figures(name)
  @src=read_src(name)
  extension = @src[:fig_extension] || '.eps'
  p file_names =File.join(name,'**',"\*#{extension}")
  files = Dir.glob(file_names)
  target = File.join(name,'figures')
  files.each{|file|
    next if File.dirname(file)==target
    FileUtils.cp(file,target,:verbose=>true)
  }
end
init(name) click to toggle source
# File lib/mk_maple_hiki.rb, line 156
def init(name)
  FileUtils.mkdir_p(name,:verbose=>true)
  FileUtils.mkdir_p(File.join(name,'figures'),:verbose=>true)

  @src = {:fig_extension => '.eps',:level => 0,
    :local_site => '/Users/bob/Sites/new_ist_data/maple_hiki_data'}
  unless File.exists?(File.join(name,'.latex2hiki_rc'))
    file=File.open(File.join(name,'.latex2hiki_rc'),'w')
    YAML.dump(@src,file)
    file.close
  end

  if File.exists?(File.join(name,'Rakefile')) then
    print "Remove Rakefile from targetdir."
  else
    @source_path = File.expand_path('..', __FILE__)
    FileUtils.cp(File.join(@source_path,'maple','new_rakefile'),
                 File.join(name,'Rakefile'),:verbose=>true)
  end
end
make_hiki(name) click to toggle source
# File lib/mk_maple_hiki.rb, line 62
    def make_hiki(name)
      if name=='./'
        toc_file = './'+File.basename(Dir.pwd())+'.tex'
        hiki_file = File.join(@src[:local_site],'text',File.basename(Dir.pwd))
      else
        toc_file = File.join(name,"#{File.basename(name)}.tex")
        hiki_file = File.join(@src[:local_site],'text',File.basename(name))
      end

      if File.exists?(toc_file) then
        toc=toc_file_base_proc(toc_file)
      else
#        dir_base_proc
      end

      File.write(hiki_file, toc)
      FileUtils.chmod(0666,hiki_file,:verbose=>true)
    end
read_src(name) click to toggle source
# File lib/mk_maple_hiki.rb, line 57
def read_src(name)
  file=File.read(File.join(name,'.latex2hiki_rc'))
  YAML.load(file)
end
toc_file_base_proc(toc_file) click to toggle source
# File lib/mk_maple_hiki.rb, line 81
def toc_file_base_proc(toc_file)
  lines = File.readlines(toc_file)
  parser=[]
  str_started=false
  lines.each{|line|
    elements=line.match(/^\\(.+){(.+)}/u)
    next unless elements
    if !str_started
      if elements[2]!='document'
        next
      else
        str_started=!str_started
      end
    end
    parser << [elements[1],elements[2]]
  }
  p parser
  converts = @src[:convert_specific_def]
  @level = @level || @src[:level] 
  text="{{toc}}\n"
  parser.each{|elements|
    tt=""
    case elements[0]
    when 'chapter'
      next if @level<0
      @level.times{ tt << '!' }
      p [tt,elements[1]]
      text << "\n#{tt}#{elements[1]}\n"
    when 'section'
      next if (@level+1)<0
      (@level+1).times{ tt << '!' }
      p [tt,elements[1]]
      text << "\n#{tt}#{elements[1]}\n"
    when 'subsection'#,'ChartElement','ChartElementTwo'
      (@level+2).times{ tt << '!' }
      text << "\n#{tt}#{elements[1]}\n"
    when 'input'
      p elements[1]
      latex_txt= File.read(File.join(File.dirname(toc_file),elements[1]))
      hiki_txt = NKF.nkf("-w",Latex.new(latex_txt).to_hiki)
      text << "\n#{hiki_txt}\n"
    end
  }
  return text
end