zoukankan      html  css  js  c++  java
  • 发布Live Writer 插件格式刷

    一直觉得在用Live Writer写Blog时没有格式刷功能不是很方便,比如有一些字体都需要红色加粗显示一下,就需要我手工重复设置这些字体的样式,这重复劳动也太多了吧?在忍受了一段时间后,我终于决定要自己写一个格式刷的插件。对格式刷插件要求很简单,能简单的实现将源字符串的格式复制到目标字符串上,咱就这么点要求,不高吧?

    实现思路

    其实Live Writer的可扩展性很好,用c#来为Live Writer写一个插件是很容易的事,往往一些功能比较简单的插件几十行代码就能搞定了。下面我来说说格式刷插件的实现思路。

    1. 先将用户选择的文本(即源字符串)的HTML标签和字符分离出来,比如在<p class=”someclass”><strong><em>this is a test </em></strong></p>这个源字符串中,我们需要将HTML标签( <p class=”someclass”><strong><em></em></strong></p> )和字符(this is a test )分离出来,最终我们只需要HTML标签,字符可以抛弃。
    2. 待用户选择了目标字符串后,同样将目标字符串的HTML标签和字符分别出来,抛弃目标字符串的HTML标签,保留字符,将对字符应用源字符串的HTML标签。

    代码示例

    01:  using System;
    02: using System.Collections.Generic;
    03: using System.Text;
    04: using System.Windows.Forms;
    05: using System.IO;
    06: using WindowsLive.Writer.Api;
    07: using System.Xml;
    08: using System.Text.RegularExpressions;
    09:
    10:
    11: namespace ZhangRonghua.FormatBrush
    12: {
    13: [WriterPlugin("01c28aeb-4848-4912-9114-9341d7779f95", "格式刷",
    14: PublisherUrl = "http://zhangronghua.cnblogs.com",
    15: Description = "选中源后,点击本图标;然后选中目标,再点击本图标即完成格式刷操作。",
    16: Name = "格式刷",
    17: ImagePath = "Image.FormatBrush.ico")]
    18: [InsertableContentSource("格式刷", SidebarText = "格式刷")]
    19: public class FormatBrush : ContentSource
    20:
    {
    21: public static int ClickCount = 0;
    22: public static StringBuilder Style = new StringBuilder();
    23:
    24:
    25: public override DialogResult CreateContent(IWin32Window dialogOwner, ref string content)
    26: {
    27: ClickCount++;
    28: //log("ClickCount", ClickCount.ToString());
    29:
    30:
    if (ClickCount%2 != 0)
    31: {
    32: var isFirstFinish = false;
    33: Style.Remove(0, Style.Length);
    34:
    35: var r = new Regex("<[^>]*>");
    36: var mcs = r.Matches(content);
    37:
    38:
    39: foreach (Match m in mcs)
    40: {
    41: if (!isFirstFinish && m.Value.StartsWith("</"))
    42: {
    43: isFirstFinish = true;
    44:
    45: Style.Append("{0}");
    46: }
    47: Style.Append(m.Value);
    48: }
    49: }
    50: else
    51:
    {
    52: var r = new Regex("<[^>]*>");
    53: content = r.Replace(content, string.Empty);
    54:
    55:
    56: content = string.Format(Style.ToString(), content);
    57: }
    58:
    59: //log("Style", Style.ToString());
    60: //log("Content" , content);
    61:
    62:
    return DialogResult.OK;
    63: }
    64:
    65: private void log(string name, string message)
    66: {
    67: FileStream log = null;
    68: StreamWriter streamWriter = null;
    69: try
    70:
    {
    71: log = new FileStream(@"C:\log.txt", FileMode.Append);
    72: streamWriter = new StreamWriter(log);
    73: streamWriter.WriteLine(DateTime.Now.ToString() + "\t\t" + name + ":" + message);
    74: }
    75: finally
    76:
    {
    77: if (null != streamWriter)
    78: {
    79: streamWriter.Close();
    80: }
    81:
    82: if (null != log)
    83: {
    84: log.Close();
    85: }
    86: }
    87: }
    88: }
    89: }
     

    使用说明及截图

    下载代码后将生成的Zhangronghua.FormatBrush Copy到Live Writer的Plugins目录下,重启Live Writer就可以使用本插件了,使用步骤如下:

    1. 选中源字符串。
    2. 点击“格式刷”插件按钮。
    3. 选中目标字符串。
    4. 点击“格式刷”插件按钮,完成操作。

    formatbrush

    代码下载

    点击这里下载,如果不能下载,请学红杏。 另外如果你还没有最好用的网盘软件DropBox,请点击这里注册,你我各增加250M的空间。

  • 相关阅读:
    iOS7中修改StatusBar的显示颜色
    制作自己的字库并在工程中显示
    用字典给Model赋值并支持map键值替换
    用字典给Model赋值
    通过runtime打印出对象所有属性的值
    加密解密再也不是你的噩梦
    通过runtime获取对象相关信息
    UITableView的UITableViewStyleGrouped
    笑话
    【转】 ios开发证书CER文件、P12文件,mobileprovition许可文件的用途
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/FormatBrushPlugin.html
Copyright © 2011-2022 走看看