1*abe8e1b9SSadaf Ebrahimi"""Utility methods for interacting with the java rules""" 2*abe8e1b9SSadaf Ebrahimi 3*abe8e1b9SSadaf Ebrahimidef _tokenize_javacopts(ctx, opts): 4*abe8e1b9SSadaf Ebrahimi """Tokenizes a list or depset of options to a list. 5*abe8e1b9SSadaf Ebrahimi 6*abe8e1b9SSadaf Ebrahimi Iff opts is a depset, we reverse the flattened list to ensure right-most 7*abe8e1b9SSadaf Ebrahimi duplicates are preserved in their correct position. 8*abe8e1b9SSadaf Ebrahimi 9*abe8e1b9SSadaf Ebrahimi Args: 10*abe8e1b9SSadaf Ebrahimi ctx: (RuleContext) the rule context 11*abe8e1b9SSadaf Ebrahimi opts: (depset[str]|[str]) the javac options to tokenize 12*abe8e1b9SSadaf Ebrahimi Returns: 13*abe8e1b9SSadaf Ebrahimi [str] list of tokenized options 14*abe8e1b9SSadaf Ebrahimi """ 15*abe8e1b9SSadaf Ebrahimi if hasattr(opts, "to_list"): 16*abe8e1b9SSadaf Ebrahimi opts = reversed(opts.to_list()) 17*abe8e1b9SSadaf Ebrahimi return [ 18*abe8e1b9SSadaf Ebrahimi token 19*abe8e1b9SSadaf Ebrahimi for opt in opts 20*abe8e1b9SSadaf Ebrahimi for token in ctx.tokenize(opt) 21*abe8e1b9SSadaf Ebrahimi ] 22*abe8e1b9SSadaf Ebrahimi 23*abe8e1b9SSadaf Ebrahimiutils = struct( 24*abe8e1b9SSadaf Ebrahimi tokenize_javacopts = _tokenize_javacopts, 25*abe8e1b9SSadaf Ebrahimi) 26