TOKOROM BLOG

iOSとかVimとかその他日々の雑多な技術情報

Octopressでソースコードの一部分だけを参照する はてなブックマーク - Octopressでソースコードの一部分だけを参照する

Permalink

おさらい:Octopressでソースコードを表示する

まずはおさらいでOctopressでソースコードを表示する方法は以下のとおり。

1. 指定のディレクトリにファイルを置く

置き場所は source/downloads/code
例えば、ここに sample/test.rb というファイルを置いておく。

1
2
$ mkdir -p source/downloads/code/sample
$ cp test.rb source/downloads/code/sample/

2. include_code でそのファイルを指定する

1
{% include_code sample/test.rb %}

これで↓のようにそのコードが表示できる。

test.rb download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Float
  def number_decimal_places
    self.to_s.length-2
  end
  def to_fraction
    higher = 10**self.number_decimal_places
    lower = self*higher
    gcden = greatest_common_divisor(higher, lower)

    return (lower/gcden).round, (higher/gcden).round
  end

private
  def greatest_common_divisor(a, b)
     while a%b != 0
       a,b = b.round,(a%b).round
     end
     return b
  end
end

コードの全てでなく、指定した箇所だけ表示したい

それでは、この test.rb の中の to_fraction というコードだけを表示したい場合はどうしたら良いだろう?
じつは現行のOctopressのデフォルトの状態ではそれができない(*1)。

ただ、この機能は v2.1 では既に実装済みのようで、Octopressを master ではなく 2.1 ブランチから取ってこればこのコードの一部分だけを表示する機能が使えるようになる。

この経緯については、 OctopressのPull request に記録がある。

2.1 ブランチをpullしてOctopressをアップデート

1
2
3
4
$ git pull octopress 2.1
$ bundle install
$ rake update_source
$ rake update_style

以上で取り込み完了です。
masterでなく 2.1 からpullしていることに注意が必要。

include_code にstartとendを指定する

あとは、↓のように include_codestartend を指定するだけで、

1
{% include_code sample/test.rb start:5 end:11 %}

コードの一部分だけを表示することが可能になる。

test.rb download
5
6
7
8
9
10
11
  def to_fraction
    higher = 10**self.number_decimal_places
    lower = self*higher
    gcden = greatest_common_divisor(higher, lower)

    return (lower/gcden).round, (higher/gcden).round
  end

*1: 2012/7/15現在の話。後述のとおり2.1では実装済みなのでじきに普通にできるようになるはず。

Comments