亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? spellchecker.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (license2)
 * Initial Developer: H2 Group
 */
package org.h2.tools.doc;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.StringTokenizer;

import org.h2.util.IOUtils;

/**
 * The spell checker makes sure that each word used in the source code
 * is spelled correctly, by comparing the words with a word list.
 * Camel case and uppercase words are checked as well.
 * HTTP links are not checked; however they may not end with a dot.
 */
public class SpellChecker {

    private HashSet dictionary = new HashSet();
    private HashSet used = new HashSet();
    private HashMap unknown = new HashMap();
    private boolean debug;
    private boolean printDictionary = false;
    private boolean addToDictionary;
    private static final String[] SUFFIX = new String[] { "html", "java", "sql", "txt", "xml", "jsp", "css", "bat",
            "csv", "xml", "js", "Driver", "properties", "task", "" };
    private static final String[] IGNORE = new String[] { "dev", "nsi", "gif", "png", "odg", "ico", "sxd", "zip",
            "bz2", "rc", "layout", "res", "dll", "jar" };
    private static final String PREFIX_IGNORE = "abc";
    private static final String IGNORE_FILE = "mainWeb.html";
    private int errorCount;

    public static void main(String[] args) throws IOException {
        String dir = "src";
        new SpellChecker().run("tools/org/h2/tools/doc/dictionary.txt", dir);
    }

    private void run(String dictionary, String dir) throws IOException {
        process(new File(dir + "/" + dictionary));
        process(new File(dir));
        if (printDictionary) {
            System.out.println("USED WORDS");
            String[] list = new String[used.size()];
            used.toArray(list);
            Arrays.sort(list);
            StringBuffer buff = new StringBuffer();
            for (int i = 0; i < list.length; i++) {
                String s = list[i];
                if (buff.length() > 0) {
                    if (buff.length() + s.length() > 80) {
                        System.out.println(buff.toString());
                        buff.setLength(0);
                    } else {
                        buff.append(' ');
                    }
                }
                buff.append(s);
            }
            System.out.println(buff.toString());
        }
        if (unknown.size() > 0) {
            System.out.println();
            System.out.println("UNKNOWN WORDS");
            for (Iterator it = unknown.keySet().iterator(); it.hasNext();) {
                String s = (String) it.next();
                // int count = ((Integer) unknown.get(s)).intValue();
                System.out.print(s + " ");
                errorCount++;
            }
            System.out.println();
            System.out.println();
        }
        if (errorCount > 0) {
            throw new IOException(errorCount + " error found");
        }
    }

    private void process(File file) throws IOException {
        String name = file.getCanonicalPath();
        if (name.endsWith(".svn")) {
            return;
        }
        if (name.indexOf("_") > 0 && name.indexOf("_en") < 0) {
            return;
        }
        if (file.isDirectory()) {
            File[] list = file.listFiles();
            for (int i = 0; i < list.length; i++) {
                process(list[i]);
            }
        } else {
            String fileName = file.getAbsolutePath();
            int idx = fileName.lastIndexOf('.');
            String suffix;
            if (idx < 0) {
                suffix = "";
            } else {
                suffix = fileName.substring(idx + 1);
            }
            boolean ignore = false;
            for (int i = 0; i < IGNORE.length; i++) {
                if (IGNORE[i].equals(suffix)) {
                    ignore = true;
                    break;
                }
            }
            if (fileName.endsWith(IGNORE_FILE)) {
                ignore = true;
            }
            if (ignore) {
                return;
            }
            boolean ok = false;
            for (int i = 0; i < SUFFIX.length; i++) {
                if (SUFFIX[i].equals(suffix)) {
                    ok = true;
                    break;
                }
            }
            if (!ok) {
                throw new IOException("Unsupported suffix: " + suffix + " for file: " + fileName);
            }
            FileReader reader = null;
            String text = null;
            try {
                reader = new FileReader(file);
                text = readStringAndClose(reader, -1);
            } finally {
                IOUtils.closeSilently(reader);
            }
            if (fileName.endsWith("dictionary.txt")) {
                addToDictionary = true;
            } else {
                addToDictionary = false;
            }
            scan(fileName, text);
        }
    }

    private void scan(String fileName, String text) {
        HashSet notFound = new HashSet();
        text = removeLinks(fileName, text);
        StringTokenizer tokenizer = new StringTokenizer(text, "\r\n \t+\"*%&/()='[]{},.-;:_<>\\!?$@#|~^`");
        while (tokenizer.hasMoreTokens()) {
            String token = tokenizer.nextToken();
            char first = token.charAt(0);
            if (Character.isDigit(first)) {
                continue;
            }
            if (!addToDictionary && debug) {
                System.out.print(token + " ");
            }
            scanCombinedToken(notFound, token);
            if (!addToDictionary && debug) {
                System.out.println();
            }
        }
        if (notFound.isEmpty()) {
            return;
        }
        if (notFound.size() > 0) {
            System.out.println("file: " + fileName);
            for (Iterator it = notFound.iterator(); it.hasNext();) {
                String s = (String) it.next();
                System.out.print(s + " ");
            }
            System.out.println();
        }
    }

    private String removeLinks(String fileName, String text) {
        StringBuffer buff = new StringBuffer(text.length());
        int pos = 0, last = 0;
        while (true) {
            pos = text.indexOf("http://", pos);
            if (pos < 0) {
                break;
            }
            int start = pos;
            buff.append(text.substring(last, start));
            pos += "http://".length();
            while (true) {
                char c = text.charAt(pos);
                if (!Character.isJavaIdentifierPart(c) && ".#/?&=%+_-:".indexOf(c) < 0) {
                    break;
                }
                pos++;
            }
            String link = text.substring(start, pos);
            if (link.endsWith(".")) {
                System.out.println("Link ending with dot in " + fileName + ": " + link);
                errorCount++;
            }
            last = pos;
        }
        buff.append(text.substring(last));
        String changed = buff.toString();
        return changed;
    }

    private void scanCombinedToken(HashSet notFound, String token) {
        for (int i = 1; i < token.length(); i++) {
            char charLeft = token.charAt(i - 1);
            char charRight = token.charAt(i);
            if (Character.isLowerCase(charLeft) && Character.isUpperCase(charRight)) {
                scanToken(notFound, token.substring(0, i));
                token = token.substring(i);
                i = 1;
            } else if (Character.isUpperCase(charLeft) && Character.isLowerCase(charRight)) {
                scanToken(notFound, token.substring(0, i - 1));
                token = token.substring(i - 1);
                i = 1;
            }
        }
        scanToken(notFound, token);
    }

    private void scanToken(HashSet notFound, String token) {
        if (token.length() < 3) {
            return;
        }
        while (true) {
            char last = token.charAt(token.length() - 1);
            if (!Character.isDigit(last)) {
                break;
            }
            token = token.substring(0, token.length() - 1);
        }
        if (token.length() < 3) {
            return;
        }
        for (int i = 0; i < token.length(); i++) {
            if (Character.isDigit(token.charAt(i))) {
                return;
            }
        }
        token = token.toLowerCase();
        if (!addToDictionary && debug) {
            System.out.print(token + " ");
        }
        if (token.startsWith(PREFIX_IGNORE)) {
            return;
        }
        if (addToDictionary) {
            dictionary.add(token);
        } else {
            if (!dictionary.contains(token)) {
                notFound.add(token);
                increment(unknown, token);
            } else {
                used.add(token);
            }
        }
    }

    private void increment(HashMap map, String key) {
        Integer value = (Integer) map.get(key);
        value = new Integer(value == null ? 0 : value.intValue() + 1);
        map.put(key, value);
    }

    public static String readStringAndClose(Reader in, int length) throws IOException {
        if (length <= 0) {
            length = Integer.MAX_VALUE;
        }
        int block = Math.min(4096, length);
        StringWriter out = new StringWriter(length == Integer.MAX_VALUE ? block : length);
        char[] buff = new char[block];
        while (length > 0) {
            int len = Math.min(block, length);
            len = in.read(buff, 0, len);
            if (len < 0) {
                break;
            }
            out.write(buff, 0, len);
            length -= len;
        }
        in.close();
        return out.toString();
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品青草久久| 国产亚洲欧美在线| 一本大道久久精品懂色aⅴ| 国产ts人妖一区二区| 国产成人自拍在线| 国产久卡久卡久卡久卡视频精品| 久久机这里只有精品| 日本不卡不码高清免费观看| 日韩成人dvd| 日韩av在线播放中文字幕| 天堂成人免费av电影一区| 丝袜美腿亚洲色图| 日本91福利区| 麻豆国产欧美日韩综合精品二区 | 亚洲色欲色欲www| 亚洲欧美另类久久久精品2019| 亚洲视频网在线直播| 亚洲女人的天堂| 亚洲成人动漫av| 青青草国产成人99久久| 久久精品国产第一区二区三区| 久久成人精品无人区| 国产精品自拍网站| www.成人网.com| 色婷婷综合久久久久中文| 欧美日韩国产高清一区二区 | 亚洲综合一区在线| 五月天亚洲婷婷| 精品在线视频一区| 粉嫩aⅴ一区二区三区四区五区| 99精品欧美一区| 欧美性一区二区| 欧美成人vr18sexvr| 中日韩av电影| 亚洲宅男天堂在线观看无病毒| 人人狠狠综合久久亚洲| 国产精品 日产精品 欧美精品| 不卡视频在线看| 亚洲一区免费视频| 久久精品噜噜噜成人av农村| 国产激情91久久精品导航| 91蜜桃免费观看视频| 欧美福利视频一区| 国产欧美一区二区精品性色 | 亚洲日本乱码在线观看| 日韩黄色小视频| 国产成人a级片| 欧美日韩一区 二区 三区 久久精品| 日韩欧美国产综合在线一区二区三区| 国产欧美精品一区| 午夜伊人狠狠久久| 岛国一区二区在线观看| 欧美日韩中文字幕一区| 久久久久久综合| 亚洲一本大道在线| 国产91丝袜在线观看| 欧美日韩免费视频| 国产精品视频在线看| 午夜激情综合网| 中文在线免费一区三区高中清不卡 | 久久伊99综合婷婷久久伊| 亚洲精品自拍动漫在线| 国产一区在线不卡| 欧美色图片你懂的| 中文字幕成人av| 日韩和欧美一区二区三区| 99久久精品费精品国产一区二区| 日韩亚洲欧美高清| 亚洲综合偷拍欧美一区色| 欧美日韩国产不卡| 国产人久久人人人人爽| 日韩中文字幕不卡| 色综合久久久久综合99| 久久久久久**毛片大全| 男人的j进女人的j一区| 91精品办公室少妇高潮对白| 国产欧美一区二区精品性| 美洲天堂一区二卡三卡四卡视频| 欧美亚洲高清一区| 日韩美女视频19| 成人永久看片免费视频天堂| 精品国产伦一区二区三区观看方式 | 高清国产一区二区| 欧美v日韩v国产v| 丝袜美腿成人在线| 欧美三级韩国三级日本三斤 | 日本亚洲电影天堂| 欧美天天综合网| www.欧美精品一二区| 国产午夜精品一区二区三区视频| 奇米色一区二区| 欧美日韩aaaaa| 一区二区成人在线| 99re8在线精品视频免费播放| 亚洲国产精品激情在线观看| 国产一区二区按摩在线观看| 精品国产a毛片| 久久精品999| 欧美电影免费提供在线观看| 日韩av电影一区| 欧美精品在线一区二区| 丝袜美腿成人在线| 欧美精品色一区二区三区| 性做久久久久久免费观看| 欧美伊人久久久久久久久影院| 亚洲精品免费看| 在线观看91视频| 一区二区三区精品在线观看| 在线日韩一区二区| 亚洲国产一区二区视频| 欧美日韩一区久久| 日韩专区一卡二卡| 欧美一区二视频| 久久99国产精品免费网站| 精品久久久久一区| 国产成人亚洲综合a∨婷婷| 国产欧美综合色| 成人av在线资源网| 亚洲色图在线视频| 欧美影院一区二区三区| 亚洲成a人片在线观看中文| 欧美一卡二卡三卡四卡| 欧美xxxxxxxx| 国产老妇另类xxxxx| 中文字幕一区在线观看| 色婷婷av一区二区三区之一色屋| 亚洲精品国产a| 欧美群妇大交群的观看方式| 久久精品国产99国产| 国产亚洲欧美色| 成人免费看的视频| 亚洲综合色噜噜狠狠| 日韩精品在线网站| 成人高清视频免费观看| 亚洲国产一区视频| 精品成人一区二区三区四区| 风流少妇一区二区| 亚洲综合在线观看视频| 91精品国产综合久久福利| 国产一区二区导航在线播放| 中文字幕日韩av资源站| 欧美精品免费视频| 国产精品亚洲综合一区在线观看| 1区2区3区国产精品| 91精品欧美福利在线观看| 国产乱子伦视频一区二区三区 | 国产亚洲欧美日韩在线一区| 色婷婷激情综合| 蜜臀久久99精品久久久画质超高清| 国产亚洲精久久久久久| 欧美在线观看视频一区二区三区| 久久精品国产一区二区三 | 日本aⅴ免费视频一区二区三区| 国产欧美视频在线观看| 欧美日韩精品一区视频| 国产美女一区二区三区| 亚洲国产aⅴ天堂久久| 国产亚洲美州欧州综合国| 欧美少妇性性性| 国产精品一区专区| 香蕉影视欧美成人| 国产欧美精品一区二区三区四区| 欧美日韩免费观看一区二区三区| 国产精品1区2区3区在线观看| 亚洲国产成人av| 国产精品久久午夜夜伦鲁鲁| 日韩精品一区二区三区在线 | 国产福利一区在线| 视频一区二区三区在线| 1024精品合集| 2020国产精品自拍| 7777精品伊人久久久大香线蕉完整版 | 欧美亚洲综合网| 国产福利视频一区二区三区| 日本中文字幕一区二区视频 | 成人app下载| 国产一区在线看| 日韩精品国产欧美| 亚洲综合图片区| 国产精品美女久久福利网站| 欧美xxxxx牲另类人与| 欧美喷潮久久久xxxxx| 91色porny| 国产欧美一区二区三区网站| 日韩视频在线永久播放| 欧美亚洲国产一区二区三区| 99久久国产免费看| 福利91精品一区二区三区| 精品夜夜嗨av一区二区三区| 婷婷夜色潮精品综合在线| 亚洲免费在线看| 国产欧美一区二区精品久导航| 精品美女被调教视频大全网站| 91精品免费在线| 欧美三级蜜桃2在线观看| 欧美自拍偷拍午夜视频| 97aⅴ精品视频一二三区| 成人国产亚洲欧美成人综合网| 国产精品资源在线观看| 国产一区激情在线|