Package org.luaj.vm2

Examples of org.luaj.vm2.LuaString


    public Object coerce(LuaValue value) {
      if ( value.isnil() )
        return null;
      if ( targetType == TARGET_TYPE_STRING )
        return value.tojstring();
      LuaString s = value.checkstring();
      byte[] b = new byte[s.m_length];
      s.copyInto(0, b, 0, b.length);
      return b;
    }
View Full Code Here


   * Note that numerical codes are not necessarily portable across platforms.
   *
   * @param args the calling args
   */
  static Varargs byte_( Varargs args ) {
    LuaString s = args.checkstring(1);
    int l = s.m_length;
    int posi = posrelat( args.optint(2,1), l );
    int pose = posrelat( args.optint(3,posi), l );
    int n,i;
    if (posi <= 0) posi = 1;
    if (pose > l) pose = l;
    if (posi > pose) return NONE;  /* empty interval; return no values */
    n = (int)(pose -  posi + 1);
    if (posi + n <= pose/* overflow? */
        error("string slice too long");
    LuaValue[] v = new LuaValue[n];
    for (i=0; i<n; i++)
      v[i] = valueOf(s.luaByte(posi+i-1));
    return varargsOf(v);
  }
View Full Code Here

   *
   * This function does not accept string values containing embedded zeros,
   * except as arguments to the q option.
   */
  static Varargs format( Varargs args ) {
    LuaString fmt = args.checkstring( 1 );
    final int n = fmt.length();
    Buffer result = new Buffer(n);
    int arg = 1;
    int c;
   
    for ( int i = 0; i < n; ) {
      switch ( c = fmt.luaByte( i++ ) ) {
      case '\n':
        result.append( "\n" );
        break;
      default:
        result.append( (byte) c );
        break;
      case L_ESC:
        if ( i < n ) {
          if ( ( c = fmt.luaByte( i ) ) == L_ESC ) {
            ++i;
            result.append( (byte)L_ESC );
          } else {
            arg++;
            FormatDesc fdsc = new FormatDesc(args, fmt, i );
            i += fdsc.length;
            switch ( fdsc.conversion ) {
            case 'c':
              fdsc.format( result, (byte)args.checkint( arg ) );
              break;
            case 'i':
            case 'd':
              fdsc.format( result, args.checkint( arg ) );
              break;
            case 'o':
            case 'u':
            case 'x':
            case 'X':
              fdsc.format( result, args.checklong( arg ) );
              break;
            case 'e':
            case 'E':
            case 'f':
            case 'g':
            case 'G':
              fdsc.format( result, args.checkdouble( arg ) );
              break;
            case 'q':
              addquoted( result, args.checkstring( arg ) );
              break;
            case 's': {
              LuaString s = args.checkstring( arg );
              if ( fdsc.precision == -1 && s.length() >= 100 ) {
                result.append( s );
              } else {
                fdsc.format( result, s );
              }
            }  break;
View Full Code Here

   *
   * For this function, a '^' at the start of a pattern does not work as an anchor,
   * as this would prevent the iteration.
   */
  static Varargs gmatch( Varargs args ) {
    LuaString src = args.checkstring( 1 );
    LuaString pat = args.checkstring( 2 );
    return new GMatchAux(args, src, pat);
  }
View Full Code Here

   *       local t = {name="lua", version="5.1"}
   *       x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
   *       --> x="lua-5.1.tar.gz"
   */
  static Varargs gsub( Varargs args ) {
    LuaString src = args.checkstring( 1 );
    final int srclen = src.length();
    LuaString p = args.checkstring( 2 );
    LuaValue repl = args.arg( 3 );
    int max_s = args.optint( 4, srclen + 1 );
    final boolean anchor = p.length() > 0 && p.charAt( 0 ) == '^';
   
    Buffer lbuf = new Buffer( srclen );
    MatchState ms = new MatchState( args, src, p );
   
    int soffset = 0;
View Full Code Here

   * string.rep (s, n)
   *
   * Returns a string that is the concatenation of n copies of the string s.
   */
  static Varargs rep( Varargs args ) {
    LuaString s = args.checkstring( 1 );
    int n = args.checkint( 2 );
    final byte[] bytes = new byte[ s.length() * n ];
    int len = s.length();
    for ( int offset = 0; offset < bytes.length; offset += len ) {
      s.copyInto( 0, bytes, offset, len );
    }
    return LuaString.valueOf( bytes );
  }
View Full Code Here

   * string.reverse (s)
   *
   * Returns a string that is the string s reversed.
   */
  static LuaValue reverse( LuaValue arg ) {   
    LuaString s = arg.checkstring();
    int n = s.length();
    byte[] b = new byte[n];
    for ( int i=0, j=n-1; i<n; i++, j-- )
      b[j] = (byte) s.luaByte(i);
    return LuaString.valueOf( b );
  }
View Full Code Here

   * returns a prefix of s with length j, and
   *   string.sub(s, -i)
   * returns a suffix of s with length i.
   */
  static Varargs sub( Varargs args ) {
    final LuaString s = args.checkstring( 1 );
    final int l = s.length();
   
    int start = posrelat( args.checkint( 2 ), l );
    int end = posrelat( args.optint( 3, -1 ), l );
   
    if ( start < 1 )
      start = 1;
    if ( end > l )
      end = l;
   
    if ( start <= end ) {
      return s.substring( start-1 , end );
    } else {
      return EMPTYSTRING;
    }
  }
View Full Code Here

 
  /**
   * This utility method implements both string.find and string.match.
   */
  static Varargs str_find_aux( Varargs args, boolean find ) {
    LuaString s = args.checkstring( 1 );
    LuaString pat = args.checkstring( 2 );
    int init = args.optint( 3, 1 );
   
    if ( init > 0 ) {
      init = Math.min( init - 1, s.length() );
    } else if ( init < 0 ) {
      init = Math.max( 0, s.length() + init );
    }
   
    boolean fastMatch = find && ( args.arg(4).toboolean() || pat.indexOfAny( SPECIALS ) == -1 );
   
    if ( fastMatch ) {
      int result = s.indexOf( pat, init );
      if ( result != -1 ) {
        return varargsOf( valueOf(result+1), valueOf(result+pat.length()) );
      }
    } else {
      MatchState ms = new MatchState( args, s, pat );
     
      boolean anchor = false;
      int poff = 0;
      if ( pat.luaByte( 0 ) == '^' ) {
        anchor = true;
        poff = 1;
      }
     
      int soff = init;
View Full Code Here

        try {
            this.animations = new TreeMap<String, SpriteAnimation>();
            File spriteFile = Project.getSpriteFile(animationSetId);
            LuaC.install();
            LuaTable environment = LuaValue.tableOf();

            environment.set("animation", new AnimationFunction());

            LuaFunction code = LoadState.load(new FileInputStream(spriteFile),
                spriteFile.getName(), environment);
            code.call();
        }
View Full Code Here

TOP

Related Classes of org.luaj.vm2.LuaString

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.