タグ

ブックマーク / npnl.hatenablog.jp (16)

  • GroovyでMarkdownパーサーを作ろう #4「Headers(見出し)の実装」その2 - No Programming, No Life

    このシリーズの一覧へ Groovy! (挨拶) どうも、ふも(@fumokmm)です。 はじめに さてそれでは、前回の続きで、Headers(見出し)の具体的な実装に入って行きたいと思います。 一行ずつ処理する 前回までは、ファイルから読み取った内容を一気にHTMLのBODYタグに埋め込んでいましたが、 今回実装しようとしているAtx形式のヘッダーは行単位で処理してゆくのが適していそうです。 そこでまず、ファイルから一行一行取り出して処理するように変更したとして、 その一行一行に対する処理を考えてみましょう。 ということでまず、fumomarkdowngの冒頭部分を以下のように変更します。 // 第一引数の内容を読み込む def lines = new File(args[0]).readLines() // Markdown形式をHTMLに変換 def md = new Markdown

    GroovyでMarkdownパーサーを作ろう #4「Headers(見出し)の実装」その2 - No Programming, No Life
    uehaj
    uehaj 2013/05/06
  • GroovyでMarkdownパーサーを作ろう #3「Headers(見出し)の実装」その1 - No Programming, No Life

    このシリーズの一覧へ Groovy! (挨拶) どうも、ふも(@fumokmm)です。 はじめに さて、今回から具体的な変換処理の実装に入っていくわけですが、いざ実際にコードを書いていこうとすると色々と下準備が必要になってきそうです。ゆっくりやっていきたいと思います。 さしあたって、今回から数回に分けて、Header(見出し)の実装に取り掛かりましょう。 見出し(見出し)記法の確認 Headers - 見出し MarkdownはSetextとatxという、二つの形式をサポートしています。 blog::2310 » Markdown文法の全訳 ということで、見出しの実装でも二種類あるようですね、今回はひとまず簡単な方のatxという方を実装して行きたいと思います。 Atx形式 Atx形式は見出しの行頭に1つから6つまでの#(ハッシュ記号)を用いる方法です。#(ハッシュ記号)の数が見出しレベルと

    GroovyでMarkdownパーサーを作ろう #3「Headers(見出し)の実装」その1 - No Programming, No Life
  • GroovyでMarkdownパーサーを作ろう #2「HTML出力部分の作成」 - No Programming, No Life

    このシリーズの一覧へ Groovy! (挨拶) どうも、ふも(@fumokmm)です。 はじめに さて、それでは早速コードを書いて行きたいと思います。といってもまだ、Markdownの変換ロジックには入りません。 今回は設定ファイルを読み込んで、その内容をプレーンなHTMLにそのまま埋め込んで出力させるというところまで作って行きたいと思います。 作成するスクリプト スクリプト名は前回決めた通り、fumomarkdowngにしようと思うので、 fumomarkdowng.groovyになります。 そして、マークダウン形式で内容が書かれたファイルは、 hoge.mdにしてみましょう。 外部ファイルの内容読み込み 何はともあれ、hoge.mdの内容をまず読み取るところから。 Groovyでは、外部ファイルの読み込みはFile#text*1を利用して行えます。 new File('path to

    GroovyでMarkdownパーサーを作ろう #2「HTML出力部分の作成」 - No Programming, No Life
    uehaj
    uehaj 2013/04/17
  • GroovyでMarkdownパーサーを作ろう #1「名前決め」 - No Programming, No Life

    このシリーズの一覧へ Groovy! (挨拶) どうも、ふも(@fumokmm)です。 はじめに 最近がっつりとブログを書いている時間がないので、先にやりたいことを決めて、ちょっとずつその軌跡を記録していく感じで記事にしていこうと思います。だいたい一つの記事が3分以内で読める程度の量になるといいかなと思っています。*1。 ということで早速始めたいを思います。 作るもの さて、タイトルにもある通り、今回はMarkdownパーサーを作ってみたいと思います。 Markdownパーサー自体は巷に沢山あふれていると思いますが、あえて自分で書くことで得られるものも多いんじゃないかなぁと思いまして、やることに決めました。 Markdownとは何か Markdown は、文書を記述するための軽量マークアップ言語のひとつである。「書きやすくて読みやすいプレーンテキストとして記述した文書を、妥当なXHTML

    GroovyでMarkdownパーサーを作ろう #1「名前決め」 - No Programming, No Life
    uehaj
    uehaj 2013/04/11
    楽しみ
  • メタプログラミングGroovy入門 - No Programming, No Life

    Groovy!(挨拶) 最近Groovyであまり遊べていないfumokmmです。G* AdventCalender2012の10日目ということで、久々に記事を書かせていただいております。 せっかくの機会なので、Groovyでメタプログラミングする際のとっかかり部分をまとめてみました。自分の理解が至らないところがあると思いますので、変なところがあったらツッコミよろしくお願いします。では早速スタートです。 Groovyでメタプログラミング GroovyではあらゆるクラスにExpandoMetaClassと呼ばれる特別なクラス(メタクラス)が提供されていて、メソッドやプロパティを利用する際にこのメタクラスを経由して様々な力を得ることができます。 たとえば、メタクラスに実行時、動的にメソッドを定義してあげれば、あたかも初めから存在していたかのようにそのメソッドが利用できるようになるという寸法です。

    メタプログラミングGroovy入門 - No Programming, No Life
  • GroovyなJDK、それがGDK(String編その1) - No Programming, No Life

    このシリーズの一覧はこちら はじめに GroovyにはJavaの標準API(JDK)を拡張したGroovy JDK(GDK)があります。大量の便利メソッドが追加されており、これを使いこなすだけでも相当のことができるようになります。このシリーズでは毎回1クラスずつ各メソッドの使用例をサンプル付きでご紹介していきたいと思います。 「今回は java.lang.String です」 Stringは、おそらく一番良く使うであろう「文字列」を表現するクラスです。Javaでは文字列はダブルクォートで囲んだ形式を使いますが、Groovyではシングルクォートで囲んだものが通常のStringとなります*1。Groovyではダブルクォートで囲んだ場合、GStringというStringの機能を拡張したクラスとなります。これは文字列に変数を埋め込んだり、遅延評価させたりできます。また、正規表現のために /str/

    GroovyなJDK、それがGDK(String編その1) - No Programming, No Life
    uehaj
    uehaj 2011/03/24
    これはものすごくすごい。
  • Groovyなら1行でできる97のこと - No Programming, No Life

    タイトルはまぁあれですが、Groovyって結構ワンライナーで出来ちゃうことが多いよねということで、みんなで97個(+αそれ以上)の一覧を作っちゃいませんか?という企画です。 以前jggugで行われていたg100ponみたいな感じでできたらいいなと思ったので、Google Docsのスプレッドシートで共有してありますので、こんなのあるよ!というのがあったらみなさんでどんどん追加して行っちゃって下さい。よろしくお願いします。 97 Things Groovy can runs by one liner http://bit.ly/97_Things_Groovy_can_runs_by_one_liner ※Twitterでつぶやく際はハッシュタグ (#groovy97oneliner) でお願いします。 ※ちなみに、順番はあとで並べ替える可能性があります。 参考リンク プログラマが知るべ

    Groovyなら1行でできる97のこと - No Programming, No Life
  • GroovyのConfigSlurperがめっちゃ便利 - No Programming, No Life

    はじめに 日参加してきたGrailsドキュメント会にて紹介されていたConfigSlurperをちょっと調べてみたらめっちゃ便利だったのでメモしておきます。*1 で、ConfigSlurperって何? 簡単に説明すると、groovyファイルで各種設定系定義を書いておいて使いましょうというノリのものです。groovy.utilパッケージに含まれているクラスですのでデフォルトでインポートされています。 機能としては ドット区切りで階層指定できたり クロージャで階層指定できたり プロパティファイル(java.util.Properties)からもパースできたり 設定同士をマージできたり 設定をエクスポートできたり 環境によって設定の値を変えたり 変数をバインドしたり できるようです。では簡単に使用例をば。 動作確認 (Groovy Version: 1.7.5 JVM: 1.6.0_22) 使

    GroovyのConfigSlurperがめっちゃ便利 - No Programming, No Life
    uehaj
    uehaj 2010/11/29
    めっちゃ便利
  • GroovyでBuilder系の定義ファイルの外出しする - No Programming, No Life

    はじめに GroovyはほにゃららBuilderが充実していますが、ちょっとだけ不満点を挙げるとしたらそれはコードに直接埋め込まなければいけないことではないだろうか。 new HogeBuilder().aaa { bbb (ccc: 'ddd') { eee() { . . . } } } こんな感じに。 そこで このBuilder定義部分*1を別ファイルなどに外出しにできないか?と思って、色々試してみたところできました。以下にソースを載せます。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) サンプルとして前に書いたMarkupBuilderでHTML生成を試してみた - No Programming, No Lifeで利用したソースを改造しました。 markup.groovy import groovy.xml.MarkupBuilde

    GroovyでBuilder系の定義ファイルの外出しする - No Programming, No Life
    uehaj
    uehaj 2010/10/22
    面白いし役立ちそう
  • Groovyでデータベース操作(GroovySQL) - No Programming, No Life

    GinAのデータベースの章*1に書かれていることをまとめておこうと思う。 ここに書かれている内容はSQLをある程度理解している方を対象としています。また、JavaDB操作を行ったことがあると理解が早まります。 DBに接続 まずは、JDBCドライバを使ってDBに接続する。ひとまず簡単な方法はファクトリメソッドを使う方法。groovy.sql.Sql#newInstance() を利用する。戻り値はgroovy.sql.Sqlインスタンス。 def db = Sql.newInstance( 'jdbc:〜〜', // DB接続文字列 'ユーザ名', // ユーザ名 'パスワード', // パスワード 'jdbcドライバクラス' // JDBCドライバ ) データの挿入・更新・削除 データの挿入・更新・削除を実行する方法としては、groovy.sql.Sql#execute(statment

    Groovyでデータベース操作(GroovySQL) - No Programming, No Life
  • Groovy基礎文法最速マスター - No Programming, No Life

    この記事はGroovy基礎文法最速マスター | Think Twiceへ移管しました。

    Groovy基礎文法最速マスター - No Programming, No Life
    uehaj
    uehaj 2010/06/06
    これはすばらしい。永久保存版
  • Gmailで覚えておくと便利な19のキーボードショートカット - No Programming, No Life

    はじめに Gmailを迅速に使いたいなと思ったときに、キーボードショートカットがあったことは覚えているのですが、どんなキーだったかなと曖昧な記憶で結局はマウスでクリックしてしまう…そんな経験ありませんか?*1 ということで、良く使うキーボードショートカットを備忘録としてまとめていきたいと思います。 なお、思い切ってよく使わないキーボードショートカットは記載しておりません。*2完全版はこちらからどうぞ。 準備 まずはキーボードショートカットを使えるようにするには、[設定]で「キーボードショートカット ON」にします。 それではどうぞ! 1.新規作成 「c」…createですね。 2.返信 「r」…replyですね。 3.転送 「f」…forwardですね。 4.下書きとして保存 「Ctrl + s」…saveですね。sはスターを付けるで使われているのでCtrlが要るんですね。 5.アーカイブ

    Gmailで覚えておくと便利な19のキーボードショートカット - No Programming, No Life
    uehaj
    uehaj 2010/05/29
    ショートカット。「?」を覚えた。
  • Groovyのコレクションフレームワークで集合演算 - No Programming, No Life

    ほんの断片ですが、メモとして。 (動作確認: Groovy Version: 1.5.7 JVM: 1.6.0_10) // #groupBy (指定条件でグルーピング) assert [ // ↓ ↓ 3と4でグルーピング [1, 2, 3, 4], [2, 2, 3, 4], [3, 5, 3, 4], [6, 3, 3, 4], ].groupBy{ it[2, 3] } == [[3, 4]:[[1, 2, 3, 4], [2, 2, 3, 4], [3, 5, 3, 4], [6, 3, 3, 4]]] def list1 = [1, 2, 3] def list2 = [4, 5, 6] def list3 = [3, 7, 8] // #disjoint(互いに素かどうか) assert list1.disjoint(list2) // ダブりなし assert !list1

    Groovyのコレクションフレームワークで集合演算 - No Programming, No Life
    uehaj
    uehaj 2009/09/22
    集合演算
  • HatenaHaiku4J - No Programming, No Life

    HatenaHaiku4JというはてなハイクAPIのラッパーを書いてます。 Pure Javaで作っておくことでGroovyやらJRubyやらJythonやらScala?やらから利用ができてとても便利そうだなぁと思ったのが開発開始の動機です。よろしくどうぞ。 ※なお、動作バージョンは JDK5.0以降です。 ダウンロード 最新版 HatenaHaiku4J_v1.2.1 (2010-05-09) 以前のバージョン HatenaHaiku4J_v1.2.0 (2010-05-07) HatenaHaiku4J_v1.1.4 (2009-11-18) HatenaHaiku4J_v1.1.3 (2009-11-07) HatenaHaiku4J_v1.1.2 (2009-11-01) HatenaHaiku4J_v1.1.1 (2009-10-24) HatenaHaiku4J_v1.1.0

    HatenaHaiku4J - No Programming, No Life
  • GroovyでRootLoaderによるクラスパスの拡張 - No Programming, No Life

    Javaプログラムを起動する際にやらなきゃいけない面倒な作業の一つとして、クラスパスを通すことがあります。 Groovyでしたら、動的にクラスパスを追加できますのでとても便利です。 GinA P418より def loader = this.class.classLoader.rootLoader loader.addURL(new File('xxxxx.jar').toURL()) loader.URLs.each{ println it } evaluate(new File('yyyyy.groovy')) xxxxx.jarがクラスパスに追加したいjarファイルで必要な分だけ指定します。 yyyyy.groovyが実際に実行したいGroovyスクリプトファイルです。 簡単便利ですね! 2009/05/06追記 もうちょっと便利にしたバージョン。 コマンドライン引数の帳尻を合わせて

    GroovyでRootLoaderによるクラスパスの拡張 - No Programming, No Life
    uehaj
    uehaj 2009/04/27
  • Groovyで頻出なコードの書き方のチートシート - No Programming, No Life

    ※こちらの記事は Groovyのチートシート - No Programming, No Life へ転載致しました。 Groovyリファレンス系記事の一覧はこちら はじめに Groovyで頻出なコードの書き方のチートシート集。 動作確認はGroovy Version: 1.5.7 JVM: 1.6.0_10にて。 リスト (2009-01-27 更新) assert [].size() == 0 assert [1,2,3,4] == (1..4) assert [1,2,3] + [1] == [1,2,3,1] assert [1,2,3] + 1 == [1,2,3,1] assert [1,2,3] << [1] == [1,2,3,[1]] assert [1,2,3,1] - [1] == [2,3] assert [1,2,3] * 2 == [1,2,3,1,2,3] as

    Groovyで頻出なコードの書き方のチートシート - No Programming, No Life
    uehaj
    uehaj 2008/12/25
  • 1