Happy WS 之 控制台 -- Happy Console (一)

Webit Script 是啥? ==》http://www.oschina.net/p/webit-script

OK 先上效果: 场景:控制台

============================================
    Wellcome Webit Script World \(^o^)/
                    QQ群:302505483
============================================
<<<
echo "Hello WS!";
>>>
Hello WS!

<<<
var a="A", var b="b"; echo a+b;
>>>
应该是语法错了: Syntax error before: 1(15). Hints: 'IDENTIFIER'
<<<
var a="A", b="b"; echo a+b;
>>>
Ab

<<<
exit
Bye (^_^)∠※

嗯, 输入一行代码,输出渲染结果, 输入 exit 退出

【期望】

  1. 一个简单的Console 工具箱,包含一些使用的工具类
  2. 用于新手Webit Script的初体验
  3. Webit Script 的 试错 & debug 工具
  4. Happy!!!

【创意征集思路】 ... 任何想法 n. 甚至是文案,提示语,错别字,欢迎参与

【写博客时的即时想法】

  1. cd 到一个目录,执行模版
  2. 保存控制台的代码到文件

【初始代码2014.05.19】

嗯 就三个文件

happy-console.props

# Webit Script Engine 配置文件
# happy-console.props

[routeLoader-main]
default=webit.script.happy.console.ConsoleLoader

java: webit.script.happy.console.ConsoleLoader

<!-- lang: java -->
package webit.script.happy.console;

import webit.script.exceptions.ResourceNotFoundException;
import webit.script.loaders.Loader;
import webit.script.loaders.Resource;
import webit.script.loaders.impl.resources.StringResource;

/**
 * 资源加载器
 *
 * @author Zqq
 */
public class ConsoleLoader implements Loader {

    @Override
    public Resource get(String name) throws ResourceNotFoundException {
        return new StringResource("<% " + name);
    }

    @Override
    public String concat(String parent, String name) {
        return name;
    }

    @Override
    public String normalize(String name) {
        return name;
    }

    @Override
    public boolean isEnableCache(String name) {
        return false;
    }
}

主类 java: webit.script.happy.console.Main

<!-- lang: java -->
// Copyright (c) 2013, Webit Team. All Rights Reserved.
package webit.script.happy.console;

import java.util.Scanner;
import webit.script.Engine;
import webit.script.exceptions.ParseException;
import webit.script.exceptions.ResourceNotFoundException;
import webit.script.exceptions.ScriptRuntimeException;

/**
 *
 * @author Zqq
 */
public class Main {

    private static Engine engine = Engine.createEngine("happy-console.props");

    public static void main(String[] args) {
        final Scanner sc = new Scanner(System.in);
        printWellcome();
        String message;
        while (true) {
            printCodeRequest();
            message = sc.nextLine().trim();
            if (message.isEmpty()) {
                continue;
            }
            if (message.equals("exit")) {
                break;
            }
            dealTemplate(message);
        }
        printGoodBye();
    }

    private static void dealTemplate(String message) {
        try {
            println(">>>");
            engine.getTemplate(message).merge(System.out);
            println();
            println();
        } catch (ResourceNotFoundException ex) {
            println("找不到什么东西了: " + ex.getMessage());
        } catch (ParseException ex) {
            println("应该是语法错了: " + ex.getMessage());
        } catch (ScriptRuntimeException ex) {
            println("运行错了: " + ex.getMessage());
        } catch (Exception ex) {
            println("不知道是什么出错了: " + ex.getMessage());
        }
    }

    private static void printCodeRequest() {
        println("<<<");
    }

    private static void printWellcome() {
        println("============================================");
        println("    Wellcome Webit Script World \\(^o^)/");
        println("                    QQ群:302505483");
        println("============================================");
    }

    private static void printGoodBye() {
        println("Bye (^_^)∠※");
    }

    private static void println(String msg) {
        System.out.println(msg);
    }

    private static void println() {
        System.out.println();
    }

    private static void print(String msg) {
        System.out.print(msg);
    }
}

转载于:https://my.oschina.net/zqq90/blog/266638

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值