标签: code-generation

在代码中构建HTML的技术

html模板作为资源编译到应用程序中.一个片段的HTML模板的样子:

<A href="%PANELLINK%" target="_blank">
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR>
%CAPTIONTEXT%
Run Code Online (Sandbox Code Playgroud)

我喜欢这样,因为较大的资源HTML文件包含样式,无怪癖模式等.

但总是如此,他们现在想要在没有链接时应该省略Anchor标签的选项.如果没有标题,则应省略BR标记.


考虑技术Nº1

鉴于我不想在C#代码中构建完整的HTML片段,我考虑过如下:

%ANCHORSTARTTAGPREFIX%<A href="%PANELLINK%" target="_blank">%ANCHORSTARTTAGPOSTFIX%
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%ANCHORENDTAGPREFIX%</A>%ANCHORENDTAGPOSTFIX%CAPTIONPREFIX%<BR>
%CAPTIONTEXT%%CAPTIONPOSTFIX%
Run Code Online (Sandbox Code Playgroud)

我可以使用前缀和后缀将HTML代码转换为:

<!--<A href="%PANELLINK%" target="_blank">-->
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
<!--</A>--><!--<BR>
%CAPTIONTEXT%-->
Run Code Online (Sandbox Code Playgroud)

但这只是荒谬的,加上一个回答者提醒我们它浪费了带宽,并且可能是错误的.


考虑技术Nº2

批发更换标签:

%AnchorStartTag%
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%AnchorEndTag%%CaptionStuff%
Run Code Online (Sandbox Code Playgroud)

并做一个find-replace来改变

%AnchorStartTag%
Run Code Online (Sandbox Code Playgroud)

同

"<A href=\"foo\" target=\"blank\""
Run Code Online (Sandbox Code Playgroud)

考虑技术Nº3

我考虑过为重要的HTML元素提供ID:

<A id="anchor" href="%PANELLINK%" target="_blank">
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR id="captionBreak">
%CAPTIONTEXT%
Run Code Online (Sandbox Code Playgroud)

然后使用HTML DOM解析器以编程方式删除节点.但是没有简单的方法可以访问值得信赖的HTML DOM解析器.如果HTML是xhtml,我将使用各种内置/本机可用的xml DOM解析器.


考虑技术Nº4

到目前为止我实际拥有的是:

private const String htmlEmptyTemplate = 
    @"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD …
Run Code Online (Sandbox Code Playgroud)

html language-agnostic code-generation

3
推荐指数
1
解决办法
587
查看次数

C#如何从VS2008代码指标中排除生成的代码?

如何从Visual Studio 2008代码指标中排除生成的代码(如Windows窗体设计器相关代码)?

我一直在挖掘,但我没有找到任何解决方案.DebuggerHidden并DebuggerNonUserCode没有任何效果.

c# code-generation code-metrics visual-studio-2008

3
推荐指数
1
解决办法
529
查看次数

是否有一个Perl脚本来实现C++类的get/set成员函数?

我今天早上正在阅读每个程序员应该拥有的关于基本工具的实用程序员第3章,他们提到了代码生成工具.他们提到了一个用于C++程序的Perl脚本,它帮助自动化为私有数据成员实现get/set()成员函数的过程.

有谁知道这样的脚本以及在哪里找到它?我一直无法找到合适的谷歌关键字来找到它.

c++ perl code-generation

3
推荐指数
1
解决办法
1246
查看次数

什么是一些流行的代码生成引擎?

我一直在使用一些Sonic和NHibernate以及NetTiers.还有什么,他们如何比较?

code-generation

3
推荐指数
1
解决办法
834
查看次数

Reflection.Emit通用基类通用方法调用

我动态地对具有泛型方法的泛型类型(填充它的契约)进行子类化.我试图调用这个泛型方法,但我生成的程序集有错误.尝试打开程序集时,Reflector崩溃,并且此代码段无法运行.

我得到的例外是:

尝试加载格式不正确的程序.(HRESULT异常:0x8007000B)

任何帮助,将不胜感激.我将安装PEVerify来查看生成的代码.

using System;
using System.Reflection;
using System.Reflection.Emit;

public class TestClass<TFirst>
{
    public void TestMethod<TSecond>()
    {
        Console.WriteLine("It works");
    }
}
public class Program
{
    static void Main(string[] args)
    {
        // create a dynamic assembly and module 
        var assemblyName = new AssemblyName("DynamicAssembly");
        var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
        var module = assemblyBuilder.DefineDynamicModule("DynamicAssembly.dll");

        // public class Voodoo.Dynamic.Class : TestClass<object>
        var testClass = typeof(TestClass<>);
        var testClassOfObject = testClass.MakeGenericType(typeof(object));
        var typeBuilder = module.DefineType(
            "Voodoo.Dynamic.Class",
            TypeAttributes.Public | TypeAttributes.Class,
            testClassOfObject);

        // public void Run()
        var …
Run Code Online (Sandbox Code Playgroud)

c# generics reflection code-generation reflection.emit

3
推荐指数
1
解决办法
2613
查看次数

条件生成方法体以满足Java中的大型接口

Java OpenGL GL接口包含大约2000个方法,出于调试目的,我想在执行一些日志记录时包装一个实例并委托对它进行调用.在每种情况下,日志代码都可以推送到相同的方法,因此写出方法实现的任务看起来可以自动化.我想要做的一个例子:

import javax.media.opengl.GL;

public class GLErrorLogger implements GL {
  private final GL backing;

  public GLErrorLogger(GL delegateToMe) {
    backing = delegateToMe;
  }

  private void checkErrorCode() {
    // Log frame and thread details depending on gl state
  }

  /**
   * Example of a method
   */
  @Override
  public int glGenLists(int arg0) {
    checkErrorCode();
    int retVal = backing.glGenLists(arg0);
    checkErrorCode();
    return retVal;
  }

  // rest of methods here...
}
Run Code Online (Sandbox Code Playgroud)

换句话说,将方法名称和参数(减去它们的类型)复制到后备对象上的调用中,使用对日志记录方法的调用进行环绕,如果有返回类型,则将结果分配给此类型的变量并将其返回在方法的最后.

我看了创建一个单独的eclipse代码模板来自动生成方法,但是没有一种直接明显的方法在返回类型上进行模式匹配.任何人都可以建议一种方法在Eclipse或其任何代码生成工具中执行此操作,以节省我拔出正则表达式工具包?

java eclipse templates code-generation pattern-matching

3
推荐指数
1
解决办法
347
查看次数

是否有Zend Framework的代码生成器?

我尝试了几个Web开发框架,例如Zend Framework 1/2,Yii,Ruby on Rails,Django for Python,Spring + myBatis等等.其中大多数附带了代码生成器,可以减轻编写CRUD,表数据编辑和SQL迁移(等等)的负担.例如,Yii中的Gii,ROR上的迁移工具,myBatis的myBatis生成器,Django应用程序管理器等等.但我在ZF找不到相同的工具.

ZF2中的代码生成是否有用,下面是示例功能:

  1. 视觉模型生成(如Gii中所示);
  2. 命令行SQL生成和数据库操作(如在Django中);
  3. 部署脚本生成.

php code-generation zend-framework zend-framework2

3
推荐指数
1
解决办法
4317
查看次数

通过document.createElement创建一个包含选项的下拉列表?

我想要实现的很简单:按下按钮时,它会创建一个带选项的选择元素.我可以做精选元素,但选项,而不是.我尝试了很多东西.这是我使用的代码,有一些注释可以提供帮助.

 <!--This is the element that we append the JavaScript to. The code that achieves the task is at the bottom.-->
<p id="clonePanel"></p>
<script>
//Don't worry about the first pid stuff.
var pid = 0;
function dupPan() {
    pid++;
    //Here we create a "p" element. The following code is the element's content and specs.
    var newPanel = document.createElement("p");
    newPanel.id=pid;
    //Here we create a "select" element (a drop down list).
    var newList = document.createElement("select");
    //Here we create a text node.
    var …
Run Code Online (Sandbox Code Playgroud)

javascript code-generation

3
推荐指数
1
解决办法
1万
查看次数

如何生成参数未知的方法?

如何生成参数未知的方法?

我Microsoft.CSharp.dll用来编译c#脚本:

 CSharpCodeProvider provider = new CSharpCodeProvider();
 CompilerParameters compilerParams = new CompilerParameters { GenerateExecutable = false, GenerateInMemory = true };
 string scriptCode = GetFullCode(); //here i add usings and so on
 var results = provider.CompileAssemblyFromSource(compilerParams, scriptCode);
Run Code Online (Sandbox Code Playgroud)

所以,我需要添加一些一些功能,但这种功能可与任意数量的参数和类型(列表DateTime,int,double等).

函数应该像这样调用:

function(String,String,DateTime,int,...);
Run Code Online (Sandbox Code Playgroud)

要么

function(DateTime,int,String,..);
Run Code Online (Sandbox Code Playgroud)

等等.

用户可以在代码中使用此功能.

如何生成这个功能?例如,我告诉我现在如何生成代码:

// GetFullCode:

StringBuilder sb = new StringBuilder();

foreach (DictionaryEntry de in Assembles)
{
    foreach (var us in de.Value.ToString().Split(new char[] { ';' }))
    {
        if (!string.IsNullOrWhiteSpace(us))
            sb.AppendLine("using " + …
Run Code Online (Sandbox Code Playgroud)

c# code-generation

3
推荐指数
1
解决办法
129
查看次数

如何使用代码生成像visual studio这样的CRUD操作的整个锅炉板代码?

我正在尝试为我的数据库表的实体生成CRUD操作,就像要使用各自的端点一样.

它与visual studio生成用于Authentication(帐户控制器)的锅炉板代码相同,也以整个包的形式生成crud操作.

我遇到了t4模板,但没有得到如何使用它来为我的数据库表实体生成crud操作.

我还尝试使用应用程序名称,引用(dll),Controller等生成整个应用程序包.就像visual studio如何为实体框架的CRUD操作生成锅炉板代码一样.

我将传递sql服务器名称,数据库名称,我想要生成CRUD操作的表.

我想用我的控制台应用程序按需生成这个,所以它应该返回带有引用s(所有dll)的整个应用程序包,然后我将创建该包的zip并返回给用户.

对于Eg:我想基于"应用程序名称"生成我的整个应用程序包,如下面的WebApplication3项目所示,其中包含References,Controller包含crud操作 在此输入图像描述

谁能告诉我怎么做?

c# asp.net t4 code-generation asp.net-web-api

3
推荐指数
1
解决办法
1351
查看次数