Skip to content

Instantly share code, notes, and snippets.

@fumokmm
fumokmm / FindAll.java
Created April 26, 2012 11:31
JavaでfindAllの実装
public static List<String> findAll(String findStr, Pattern regex) {
List<String> result = new ArrayList<String>();
Matcher matcher = regex.matcher(findStr);
while (matcher.find()) {
result.add(matcher.group());
}
return result;
}
@fumokmm
fumokmm / HttpHeaderWrappedRequest.java
Created April 22, 2012 00:42
JavaEEでリクエストのHTTPヘッダに値を付加する
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class HttpHeaderWrappedRequest extends HttpServletRequestWrapper {
/** 追加HTTPヘッダ情報を保持するマップ */
private Map<String, String> addingHeader;
@fumokmm
fumokmm / SS.cs
Created February 21, 2012 12:33
C#でちょっとしたシンタクスシュガーを実現するクラス
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Utility {
/// <summary>
/// シンタクスシュガー用ユーティリティクラス
/// </summary>
public static class SS {
@fumokmm
fumokmm / TestHelperUtility.cs
Created February 15, 2012 05:19
C#でテストするときのヘルパーユーティリティ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.IO;
namespace Test {
static class TestHelperUtility {
/// <summary>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Fumokmm.Utility
{
/// <summary>
/// シンタクスシュガー用ユーティリティクラス
/// </summary>
@fumokmm
fumokmm / gdkmethods.groovy
Created October 14, 2011 05:10
Analyze Groovy GDK Documentation.
@Grab('nekohtml:nekohtml:1.9.6.2')
import org.cyberneko.html.parsers.SAXParser
def gdkdoc = new XmlSlurper(new SAXParser()).parseText(
new URL('http://groovy.codehaus.org/groovy-jdk/index-all.html').text
// new File('C:/tool/Groovy/groovy-1.9.0-beta-4/html/groovy-jdk/index-all.html').text
)
// search all DT tags and DD tags.
def dt = gdkdoc.'**'.findAll{ it.name() == 'DT' }.collect{ it.text() }
@fumokmm
fumokmm / GroovyMarkupDSLHandler.groovy
Created September 17, 2011 01:00
Make Groovy's MarkupBuilder style DSL String
// http://d.hatena.ne.jp/fumokmm/20110917/1316223642
import org.xml.sax.helpers.DefaultHandler
import org.xml.sax.Attributes
class GroovyMarkupDSLHandler extends DefaultHandler {
IndentPrinter p
boolean needNewLine
GroovyMarkupDSLHandler(Writer writer = new PrintWriter(System.out), String indent = ' ') {
p = new IndentPrinter(writer, indent)
needNewLine = false
@fumokmm
fumokmm / replaceFirstAndLast.groovy
Created September 12, 2011 15:09
Groovyで文字列の前後を一気に除去する。GroovyというかJavaですが。
def reg = /[a-zA-Z]*/.with{ [/^${it}/, '|', /${it}$/].join() }
assert 'あああ' == 'aaaABCあああzzz'.replaceAll(reg, '')
assert 'いいい' == 'bbbABCいいいzzz'.replaceAll(reg, '')
@fumokmm
fumokmm / traverseAndGetFirst.groovy
Created September 11, 2011 02:08
Groovyでファイルツリーを巡り、最初に見つかったファイルを返却する(見つかったらすぐ返却)
// cf. http://groovy.codehaus.org/groovy-jdk/java/io/File.html#traverse%28java.util.Map,%20groovy.lang.Closure%29
// require Groovy v1.7.1 or upper
// blog. http://d.hatena.ne.jp/fumokmm/20110911/1315709484
def findFirstFile(File rootDir, java.util.regex.Pattern filter) {
File result
rootDir.traverse(
type : groovy.io.FileType.FILES,
nameFilter : filter
) { it -> result = it
groovy.io.FileVisitResult.TERMINATE
@fumokmm
fumokmm / foldLeftWithRealCurry.groovy
Created September 4, 2011 21:36
Real currying on Groovy.
def realCurry(Closure clos) {
if (clos.maximumNumberOfParameters >= 1) {
return { x ->
def cc = clos.curry(x)
if (cc.maximumNumberOfParameters) realCurry(cc)
else cc()
}
} else {
return clos
}