Create  Edit  Diff  Phillro Industries  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

ap-hiki-doc.rb

ap-hiki-doc.rb

   1|#!/bin/env ruby
   2|# ap-hiki-doc.rb - Apollo Hiki cache を読む refe みたいなもの
   3|# author: Kazuhiro Yoshdia <moriq@moriq.com>
   4|
   5|target = ARGV.shift || 'FrontPage'
   6|@page, @name = target.split(/#/)
   7|
   8|require 'cgi'
   9|
  10|@cache_dir = "ap-hiki-cache"
  11|
  12|def page_each_line
  13|  open("#@cache_dir/#{CGI.escape @page}.hiki") do |f|
  14|    while line = f.gets
  15|      yield line
  16|    end
  17|  end
  18|end
  19|
  20|def print_page_abstract
  21|  # 最初のセクションだけ表示する
  22|  sw=false
  23|  page_each_line do |line|
  24|    if line =~ /^$/
  25|      next unless sw
  26|    end
  27|    if line =~ /^!/
  28|      break if sw
  29|    end
  30|    sw=true
  31|    puts line if sw
  32|  end
  33|end
  34|
  35|def print_methods(cm=true, im=true)
  36|  sw=false
  37|  page_each_line do |line|
  38|    if line =~ /^!/
  39|      if cm && line =~ /^!!\s*class methods/
  40|        sw=true
  41|        puts line
  42|      elsif im && line =~ /^!!\s*methods/
  43|        sw=true
  44|        puts line
  45|      elsif line =~ /^!!!\s*/
  46|        puts line if sw
  47|      else
  48|        sw=false
  49|      end
  50|    end
  51|  end
  52|end
  53|
  54|def print_class_methods
  55|  print_methods(true, false)
  56|end
  57|
  58|def print_instance_methods
  59|  print_methods(false, true)
  60|end
  61|
  62|def print_method_manual
  63|  sw = false
  64|  text_p = false
  65|  page_each_line do |line|
  66|    if line =~ /^!/
  67|      # !!! 行が連続するときはまとめて考える
  68|      if text_p
  69|        sw = false
  70|      end
  71|      if line =~ /^!!!\s*([\w.:]+)/n
  72|        method_name = $1
  73|        # 名前の頭が一致したものを全て表示
  74|        if method_name =~ /^#{Regexp.quote @name}/
  75|          sw = true
  76|        end
  77|      end
  78|    else
  79|      text_p = true if sw
  80|    end
  81|    puts line if sw
  82|  end
  83|end
  84|
  85|case @name
  86|when "class_methods", "cmethods", "cm"
  87|  print_class_methods
  88|when "instance_methods", "imethods", "im"
  89|  print_instance_methods
  90|when "methods"
  91|  print_methods
  92|else
  93|  if @name.nil?
  94|    print_page_abstract
  95|  else
  96|    print_method_manual
  97|  end
  98|end

Last modified:2004/12/07 12:21:40
Keyword(s):
References:[SupportScripts]