public void emitTag(String tag, String ignore) {
        if(tag == null) {
            return;
        }

        if(ignore != null && ImplicitScanner2.tagcmp(tag, ignore) && !this.explicit_typing) {
            return;
        }

        Level lvl = currentLevel();

        if(tag.length() == 0) {
            write(BANG_SPACE, 2);
        } else if(tag.startsWith("tag:")) {
            int taglen = tag.length();
            Pointer ptag = Pointer.create(tag);
            write(BANG, 1);
            if(tag.substring(4).startsWith(YAML.DOMAIN)) {
                int skip = 4 + YAML.DOMAIN.length() + 1;
                write(ptag.withStart(skip), taglen - skip);
            } else {
                int subd = 4;
                while(subd < taglen && tag.charAt(subd) != ':') {
                    subd++;
                }
                if(subd < taglen && tag.charAt(subd) == ':') {
                    if(subd > (YAML.DOMAIN.length() + 5) &&
                       tag.substring(subd - YAML.DOMAIN.length()).startsWith(YAML.DOMAIN)) {
                        write(ptag.withStart(4), (subd - YAML.DOMAIN.length()) - 5);
                        write(SLASH, 1);
                        write(ptag.withStart(subd+1), taglen - (subd + 1));
                    } else {
                        write(ptag.withStart(4), subd - 4);
                        write(SLASH, 1);
                        write(ptag.withStart(subd + 1), taglen - (subd + 1));
                    }
                } else {
                    /* TODO: Invalid tag (no colon after domain) */
                    return;
                }
            }
            write(SPACE, 1);
        } else if(tag.startsWith("x-private:")) {
            write(TWO_BANGS, 2);
            write(Pointer.create(tag.substring(10)), tag.length()-10);
            write(SPACE, 1);
        }
        lvl.anctag = 1;
    }
public void emitTag ( String tag , String ignore ) { if ( tag == null ) { return ; } if ( ignore != null && ImplicitScanner2 . tagcmp ( tag , ignore ) && ! this . explicit_typing ) { return ; } Level lvl = currentLevel ( ) ; if ( tag . length ( ) == 0 ) { write ( BANG_SPACE , 2 ) ; } else if ( tag . startsWith ( "tag:" ) ) { int taglen = tag . length ( ) ; Pointer ptag = Pointer . create ( tag ) ; write ( BANG , 1 ) ; if ( tag . substring ( 4 ) . startsWith ( YAML . DOMAIN ) ) { int skip = 4 + YAML . DOMAIN . length ( ) + 1 ; write ( ptag . withStart ( skip ) , taglen - skip ) ; } else { int subd = 4 ; while ( subd < taglen && tag . charAt ( subd ) != ':' ) { subd ++ ; } if ( subd < taglen && tag . charAt ( subd ) == ':' ) { if ( subd > ( YAML . DOMAIN . length ( ) + 5 ) && tag . substring ( subd - YAML . DOMAIN . length ( ) ) . startsWith ( YAML . DOMAIN ) ) { write ( ptag . withStart ( 4 ) , ( subd - YAML . DOMAIN . length ( ) ) - 5 ) ; write ( SLASH , 1 ) ; write ( ptag . withStart ( subd + 1 ) , taglen - ( subd + 1 ) ) ; } else { write ( ptag . withStart ( 4 ) , subd - 4 ) ; write ( SLASH , 1 ) ; write ( ptag . withStart ( subd + 1 ) , taglen - ( subd + 1 ) ) ; } } else { return ; } } write ( SPACE , 1 ) ; } else if ( tag . startsWith ( "x-private:" ) ) { write ( TWO_BANGS , 2 ) ; write ( Pointer . create ( tag . substring ( 10 ) ) , tag . length ( ) - 10 ) ; write ( SPACE , 1 ) ; } lvl . anctag = 1 ; }
syck_emit_tag