Ticket #6122: mapcss-concat.patch

File mapcss-concat.patch, 3.1 KB (added by cmuelle8, 15 years ago)
  • src/org/openstreetmap/josm/gui/mappaint/LabelCompositionStrategy.java

     
    108108        public String compose(OsmPrimitive primitive) {
    109109            if (defaultLabelTag == null) return null;
    110110            if (primitive == null) return null;
    111             return primitive.get(defaultLabelTag);
     111
     112            String res = new String("");
     113            if (defaultLabelTag.indexOf(' ') >= 0) {
     114                String tags[] = defaultLabelTag.split(" ");
     115                for (String tag : tags) {
     116                    res += (primitive.get(tag)==null) ? tag : primitive.get(tag);
     117                    res += ' ';
     118                }
     119            } else {
     120                res = primitive.get(defaultLabelTag);
     121            }
     122            return res;
    112123        }
    113124
    114125        public String getDefaultLabelTag() {
  • src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java

     
    7272            public Float minus(float... args) {
    7373                if (args.length == 0)
    7474                    return 0f;
    75                 if (args.length == 1) { // unary minus
     75                if (args.length == 1)
    7676                    return -args[0];
    77                 }
    7877                float res = args[0];
    7978                for (int i=1; i<args.length; ++i) {
    8079                    res -= args[i];
     
    167166                return env.osm.hasKey(key);
    168167            }
    169168
     169            public String concat(Object... args) {
     170                String res = new String("");
     171                for (Object f : args) {
     172                    res += f.toString();
     173                }
     174                return res;
     175            }
     176
    170177            public boolean not(boolean b) {
    171178                return !b;
    172179            }
     
    285292                throw  new RuntimeException(ex);
    286293            }
    287294            for (Method m : allMethods) {
    288                 if (!m.getName().equals(name))
     295                if (!m.getName().equals(name)) {
    289296                    continue;
     297                }
    290298                Class<?>[] expectedParameterTypes = m.getParameterTypes();
    291299                Object[] convertedArgs = new Object[expectedParameterTypes.length];
    292300
     
    303311                    }
    304312                    convertedArgs[0] = arrayArg;
    305313                } else {
    306                     if (args.size() != expectedParameterTypes.length)
     314                    if (args.size() != expectedParameterTypes.length) {
    307315                        continue;
     316                    }
    308317                    for (int i=0; i<args.size(); ++i) {
    309318                        convertedArgs[i] = Cascade.convertTo(args.get(i).evaluate(env), expectedParameterTypes[i]);
    310319                        if (convertedArgs[i] == null)